Swift - Wörterbücher

Swift 4 dictionarieswerden verwendet, um ungeordnete Listen von Werten desselben Typs zu speichern. Swift 4 führt eine strenge Überprüfung durch, die es Ihnen nicht erlaubt, versehentlich einen falschen Typ in ein Wörterbuch einzugeben.

Swift 4-Wörterbücher verwenden eine eindeutige Kennung, die als a bezeichnet wird keyum einen Wert zu speichern, auf den später verwiesen und über denselben Schlüssel nachgeschlagen werden kann. Im Gegensatz zu Elementen in einem Array sind Elemente in adictionaryhabe keine bestimmte Reihenfolge. Sie können eine verwendendictionary wenn Sie Werte anhand ihrer Bezeichner nachschlagen müssen.

Ein Wörterbuchschlüssel kann entweder eine Ganzzahl oder eine Zeichenfolge ohne Einschränkung sein, sollte jedoch innerhalb eines Wörterbuchs eindeutig sein.

Wenn Sie einer Variablen ein erstelltes Wörterbuch zuweisen, ist es immer veränderbar. Dies bedeutet, dass Sie es ändern können, indem Sie seine Elemente hinzufügen, entfernen oder ändern. Wenn Sie jedoch einer Konstante ein Wörterbuch zuweisen, ist dieses Wörterbuch unveränderlich und seine Größe und sein Inhalt können nicht geändert werden.

Wörterbuch erstellen

Sie können ein leeres Wörterbuch eines bestimmten Typs mit der folgenden Initialisierersyntax erstellen:

var someDict = [KeyType: ValueType]()

Mit der folgenden einfachen Syntax können Sie ein leeres Wörterbuch erstellen, dessen Schlüssel vom Typ Int ist und dessen zugehörige Werte Zeichenfolgen sind.

var someDict = [Int: String]()

Hier ist ein Beispiel zum Erstellen eines Wörterbuchs aus einer Reihe vorgegebener Werte:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

Sequenzbasierte Initialisierung

Mit Swift 4 können Sie ein Wörterbuch aus Arrays erstellen (Schlüssel-Wert-Paare).

var cities = [“Delhi”,”Bangalore”,”Hyderabad”]

Mit der folgenden einfachen Syntax können Sie ein leeres Wörterbuch erstellen, dessen Schlüssel vom Typ Int ist und dessen zugehörige Werte Zeichenfolgen sind.

var Distance = [2000,10, 620]

Hier ist ein Beispiel zum Erstellen eines Wörterbuchs aus einer Reihe vorgegebener Werte:

let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))

Mit den obigen Codezeilen wird ein Wörterbuch mit Städten als Schlüssel und Entfernung als Wert erstellt.

Filtern

Mit Swift 4 können Sie Werte aus einem Wörterbuch filtern.

var closeCities = cityDistanceDict.filter { $0.value < 1000 }

Wenn wir den obigen Code ausführen, ist unser closeCities-Wörterbuch.

["Bangalore" : 10 , "Hyderabad" : 620]

Wörterbuchgruppierung

Mit Swift 4 können Sie eine Gruppierung von Wörterbuchwerten erstellen.

var cities = ["Delhi","Bangalore","Hyderabad","Dehradun","Bihar"]

Mit der folgenden einfachen Syntax können Sie die Werte des Wörterbuchs nach dem ersten Alphabet gruppieren.

var GroupedCities = Dictionary(grouping: cities ) { $0.first! }

Das Ergebnis des obigen Codes wird sein

["D" :["Delhi","Dehradun"], "B" : ["Bengaluru","Bihar"], "H" : ["Hyderabad"]]

Zugriff auf Wörterbücher

Sie können einen Wert aus einem Wörterbuch abrufen, indem Sie die tiefgestellte Syntax verwenden und den Schlüssel des Wertes, den Sie abrufen möchten, in eckigen Klammern unmittelbar nach dem Namen des Wörterbuchs wie folgt übergeben:

var someVar = someDict[key]

Sehen wir uns das folgende Beispiel an, um Werte aus einem Wörterbuch zu erstellen, zu initialisieren und darauf zuzugreifen:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someVar = someDict[1]

print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Value of key = 1 is Optional("One")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Wörterbücher ändern

Sie können verwenden updateValue(forKey:)Methode zum Hinzufügen eines vorhandenen Werts zu einem bestimmten Schlüssel des Wörterbuchs. Diese Methode gibt einen optionalen Wert des Wertetyps des Wörterbuchs zurück. Hier ist ein einfaches Beispiel -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("New value of one", forKey: 1)
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Sie können ein vorhandenes Element eines Wörterbuchs ändern, indem Sie einem bestimmten Schlüssel einen neuen Wert zuweisen, wie im folgenden Beispiel gezeigt.

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict[1]
someDict[1] = "New value of one"
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Schlüsselwertpaare entfernen

Sie können verwenden removeValueForKey()Methode zum Entfernen eines Schlüssel-Wert-Paares aus einem Wörterbuch. Diese Methode entfernt das Schlüssel-Wert-Paar, falls vorhanden, und gibt den entfernten Wert zurück, oder gibt nil zurück, wenn kein Wert vorhanden ist. Hier ist ein einfaches Beispiel -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

Sie können auch die tiefgestellte Syntax verwenden, um ein Schlüssel-Wert-Paar aus einem Wörterbuch zu entfernen, indem Sie einen Wert von zuweisen nilfür diesen Schlüssel. Hier ist ein einfaches Beispiel -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

someDict[2] = nil

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

Durch ein Wörterbuch iterieren

Sie können eine verwenden for-in Schleife, um den gesamten Satz von Schlüssel-Wert-Paaren in einem Wörterbuch zu durchlaufen, wie im folgenden Beispiel gezeigt -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (index, keyValue) in someDict.enumerated() {
   print("Dictionary key \(index) - Dictionary value \(keyValue)")
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One

Sie können verwenden enumerate() Funktion, die den Index des Elements zusammen mit seinem Paar (Schlüssel, Wert) zurückgibt, wie unten im Beispiel gezeigt -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")

In Arrays konvertieren

Sie können eine Liste von Schlüssel-Wert-Paaren aus einem bestimmten Wörterbuch extrahieren, um separate Arrays für Schlüssel und Werte zu erstellen. Hier ist ein Beispiel -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

print("Print Dictionary Keys")

for (key) in dictKeys {
   print("\(key)")
}
print("Print Dictionary Values")

for (value) in dictValues {
   print("\(value)")
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Print Dictionary Keys
2
3
1
Print Dictionary Values
Two
Three
One

Die count-Eigenschaft

Sie können schreibgeschützt verwenden count Eigenschaft eines Wörterbuchs, um die Anzahl der Elemente in einem Wörterbuch wie unten gezeigt herauszufinden -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]

print("Total items in someDict1 = \(someDict1.count)")
print("Total items in someDict2 = \(someDict2.count)")

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Total items in someDict1 = 3
Total items in someDict2 = 2

Die leere Eigenschaft

Sie können schreibgeschützt verwenden empty Eigenschaft eines Wörterbuchs, um herauszufinden, ob ein Wörterbuch leer ist oder nicht, wie unten gezeigt -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()

print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

someDict1 = false
someDict2 = false
someDict3 = true