Swift Language
ordböcker
Sök…
Anmärkningar
Vissa exempel i det här ämnet kan ha en annan ordning när de används eftersom ordbok inte är garanterad.
Förklarande ordböcker
Ordböcker är en oordnad samling nycklar och värden. Värden avser unika nycklar och måste vara av samma typ.
Vid initialisering av en ordlista är hela syntaxen enligt följande:
var books : Dictionary<Int, String> = Dictionary<Int, String>()
Även om ett mer kortfattat sätt att initialisera:
var books = [Int: String]()
// or
var books: [Int: String] = [:]
Förklara en ordlista med nycklar och värden genom att ange dem i en kommaseparerad lista. Typerna kan härledas från typerna av nycklar och värden.
var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
//books = [2: "Book 2", 1: "Book 1"]
var otherBooks = [3: "Book 3", 4: "Book 4"]
//otherBooks = [3: "Book 3", 4: "Book 4"]
Ändra ordböcker
Lägg till en nyckel och ett värde i en ordlista
var books = [Int: String]()
//books = [:]
books[5] = "Book 5"
//books = [5: "Book 5"]
books.updateValue("Book 6", forKey: 5)
//[5: "Book 6"]
updateValue returnerar det ursprungliga värdet om det finns ett eller inte.
let previousValue = books.updateValue("Book 7", forKey: 5)
//books = [5: "Book 7"]
//previousValue = "Book 6"
Ta bort värdet och deras nycklar med liknande syntax
books[5] = nil
//books [:]
books[6] = "Deleting from Dictionaries"
//books = [6: "Deleting from Dictionaries"]
let removedBook = books.removeValueForKey(6)
//books = [:]
//removedValue = "Deleting from Dictionaries"
Få tillgång till värden
Ett värde i en Dictionary
kan nås med dess nyckel:
var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
let bookName = books[1]
//bookName = "Book 1"
Värdena i en ordlista kan itereras genom att använda values
:
for book in books.values {
print("Book Title: \(book)")
}
//output: Book Title: Book 2
//output: Book Title: Book 1
På liknande sätt kan nycklarna i en ordlista itereras genom att använda dess keys
:
for bookNumbers in books.keys {
print("Book number: \(bookNumber)")
}
// outputs:
// Book number: 1
// Book number: 2
För att få alla key
och value
motsvarar varandra (du kommer inte i ordentlig ordning eftersom det är en ordlista)
for (book,bookNumbers)in books{
print("\(book) \(bookNumbers)")
}
// outputs:
// 2 Book 2
// 1 Book 1
Observera att en Dictionary
, till skillnad från en Array
, i sig inte är ordnad - det vill säga, det finns ingen garanti för ordningen under iteration.
Om du vill komma åt flera nivåer i en ordlista använder du en upprepad syntax för prenumerationen.
// Create a multilevel dictionary.
var myDictionary: [String:[Int:String]]! = ["Toys":[1:"Car",2:"Truck"],"Interests":[1:"Science",2:"Math"]]
print(myDictionary["Toys"][2]) // Outputs "Truck"
print(myDictionary["Interests"][1]) // Outputs "Science"
Ändra värde på ordlistan med nyckel
var dict = ["name": "John", "surname": "Doe"]
// Set the element with key: 'name' to 'Jane'
dict["name"] = "Jane"
print(dict)
Hämta alla nycklar i ordlistan
let myAllKeys = ["name" : "Kirit" , "surname" : "Modi"]
let allKeys = Array(myAllKeys.keys)
print(allKeys)
Slå samman två ordböcker
extension Dictionary {
func merge(dict: Dictionary<Key,Value>) -> Dictionary<Key,Value> {
var mutableCopy = self
for (key, value) in dict {
// If both dictionaries have a value for same key, the value of the other dictionary is used.
mutableCopy[key] = value
}
return mutableCopy
}
}