Swift Dictionary (z przykładami)

W tym samouczku dowiesz się, czym jest słownik, jak tworzyć słownik i wykonywać niektóre typowe operacje w słowniku.

W poprzednim artykule Swift Arrays dowiedzieliśmy się, jak możemy przechowywać wiele wartości w zmiennej / stałej. W tym artykule omówimy, w jaki sposób możemy przechowywać dane / wartości jako pary klucz-wartość.

Co to jest słownik?

Słownik to po prostu kontener, który może przechowywać wiele danych jako parę klucz-wartość w nieuporządkowany sposób.

Każda wartość jest powiązana z unikalnym kluczem i przechowuje dane w nieuporządkowanej liście jak w Zestawach, tj. Nie otrzymujesz elementów w tej samej kolejności, w jakiej zdefiniowałeś elementy w słowniku.

Możesz użyć słownika zamiast tablicy, gdy chcesz wyszukać wartość z jakimś identyfikatorem w kolekcji. Załóżmy, że możesz chcieć przeszukać stolicę kraju. W takim przypadku utworzysz słownik z kluczowym krajem i wartością stolicy. Teraz możesz pobrać stolicę z kolekcji, wyszukując kluczowy kraj.

Mówiąc prościej, łączysz klucz z wartością. W powyższym przykładzie sparowaliśmy kraj z jego stolicą.

Jak zadeklarować słownik w Swift?

Możesz utworzyć pusty słownik, określając key:valuetyp danych w nawiasach kwadratowych ().

Przykład 1: Deklarowanie pustego słownika

 let emptyDic:(Int:String) = (:) print(emptyDic) 

Po uruchomieniu programu wynik będzie następujący:

 (:)

LUB

Możesz również zdefiniować pusty słownik, jak poniżej:

 let emptyDic:Dictionary = (:) print(emptyDic) 

W powyższym programie zadeklarowaliśmy stałą emptyDic słownika typów z kluczem typu Inti wartością typu Stringi zainicjowaliśmy ją wartością 0.

LUB

Ponieważ Swift jest językiem wnioskowania o typie, można również utworzyć słownik bezpośrednio bez określania typu danych, ale musi zostać zainicjowany z pewnymi wartościami, aby kompilator mógł wywnioskować jego typ jako:

Przykład 2: Deklarowanie słownika z pewnymi wartościami

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic) 

Po uruchomieniu programu wynik będzie następujący:

 („b”: 2, „a”: 1, „i”: 9, „c”: 3, „e”: 5, „f”: 6, „g”: 7, „d”: 4, „ h ": 8)

W powyższym programie zadeklarowaliśmy słownik bez jawnego definiowania typu, ale inicjując z pewnymi domyślnymi elementami.

Element znajduje się w parze klucz: wartość, gdzie klucz jest typu, Stringa wartość jest Inttypu. Ponieważ słownik jest nieuporządkowaną listą, print(someDic)wartości są wyświetlane w innej kolejności niż zdefiniowana.

Przykład 3: Tworzenie słownika z dwóch tablic

Możemy również stworzyć słownik za pomocą tablic.

 let customKeys = ("Facebook", "Google", "Amazon") let customValues = ("Mark", "Larry", "Jeff") let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary) 

Po uruchomieniu programu wynik będzie następujący:

 („Amazon”: „Jeff”, „Google”: „Larry”, „Facebook”: „Mark”)

W powyższym programie zip(customKeys,customValues)tworzy nową sekwencję krotek z każdym elementem reprezentującym wartość z customKeys i customValues. Aby dowiedzieć się więcej o tym, jak działa zip, odwiedź Swit zip.

Teraz możemy przekazać tę sekwencję do Dictionary(uniqueKeysWithValues:)inicjalizatora i utworzyć nowy słownik. Dlatego print(newDictionary)generuje nowy słownik z elementami z dwóch tablic.

Jak uzyskać dostęp do elementów słownika w Swift?

Jako tablice można uzyskać dostęp do elementów słownika przy użyciu składni indeksu dolnego. Musisz umieścić klucz wartości, do której chcesz uzyskać dostęp, w nawiasach kwadratowych bezpośrednio po nazwie słownika.

Przykład 4: Dostęp do elementów słownika

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) print(someDic("a")) print(someDic("h")) 

Po uruchomieniu programu wynik będzie następujący:

 Opcjonalnie (1) Opcjonalnie (8) 

Możesz także uzyskać dostęp do elementów słownika za pomocą pętli for-in.

Przykład 5: Dostęp do elementów słownika za pomocą pętli for-in

 let someDic = ("a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9) for (key,value) in someDic ( print("key:(key) value:(value)") ) 

Po uruchomieniu programu wynik będzie następujący:

 klucz: b wartość: 2 klucz: a wartość: 1 klucz: i wartość: 9 klucz: c wartość: 3 klucz: e wartość: 5 klucz: f wartość: 6 klucz: g wartość: 7 

Jak modyfikować elementy słownika w Swift?

Możesz dodawać elementy w słowniku za pomocą składni indeksu dolnego. Musisz dołączyć nowy klucz jako indeks dolny i przypisać nową wartość typu jak Dictionary.

Przykład 6: Ustawianie elementów w słowniku

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Japan") = "Tokyo" print(someDictionary) 

Po uruchomieniu programu wynik będzie następujący:

 ("Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu")

In the above example, we've created a new key-value pair "Japan": "Tokyo" in the given dictionary by using the subscript syntax.

You can also use subscript syntax to change the value associated with a particular key as:

Example 7: Changing elements of a dictionary

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") someDictionary("Nepal") = "KATHMANDU" print(someDictionary) 

When you run the program, the output will be:

 ("China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU")

Some helpful built-in Dictionary functions & properties

1. isEmpty

This property determines if an dictionary is empty or not. It returns true if a dictionary does not contain any value otherwise returns false.

Example 8: How isEmpty works?

 let someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") print(someDictionary.isEmpty) 

When you run the program, the output will be:

 false

2. first

This property is used to access the first element of a dictionary.

Example 9: How first works?

 let someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") print(someDictionary.first) 

When you run the program, the output will be:

 Optional((key: "China", value: "Beijing"))

3. count

This property returns the total number of elements (key-value pair) in a dictionary.

Example 10: How count works?

 let someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") print(someDictionary.count) 

When you run the program, the output will be:

 3

4. keys

This property returns all the keys inside the dictionary.

Example 11: How keys works?

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let dictKeys = Array(someDictionary.keys) print(dictKeys) 

When you run the program, the output will be:

 ("China", "India", "Nepal")

Similarly, you can use values to get all the values inside the dictionary.

5. removeValue

This function removes and returns the value specified with the key from the dictionary. Both key value pair will be removed from the dictionary.

Example 12: How removeValue() works?

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary.removeValue(forKey: "Nepal") print(val) print(someDictionary) 

When you run the program, the output will be:

 Optional("Kathmandu") ("India": "NewDelhi", "China": "Beijing") 

Similarly, you can also use removeAll function to empty an dictionary.

Things to Remember

1. While using subscript syntax to access elements of an dictionary in Swift, you must be sure the key lies in the index otherwise you will get a nil value. Let's see this in example:

Example 13: Key must be present

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary("Japan") print(val) 

When you run the program, the output will be:

 nil

In the above program, there is no key Japan. So when you try to access the value of the key "Japan", you will get a nil value.

2. Likewise, key-values are case-sensitive in Swift, so you must make sure the correct cased key/value is used. Otherwise, you will get a nil value. Let's see this in example:

Example 14: Keys are case-sensitive

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary("nepal") print(val) 

When you run the program, the output will be:

 nil

In the above program, there is no key nepal. So when you try to access the value of the key "nepal", you will get a nil value.

3. There is also a way to provide a default value if the value for a given key does not exist. Let's see this in example:

Example 12: Default value for non-existent key

 var someDictionary = ("Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi") let val = someDictionary("nepal", default:"Not Found") print(val) 

When you run the program, the output will be:

 Not Found

W powyższym programie określiliśmy wartość Not Found w domyślnym parametrze podczas uzyskiwania dostępu do słownika. Jeśli wartość dla klucza nie istnieje, zwracana jest wartość domyślna, w przeciwnym razie zwracana jest wartość.

W naszym przypadku nie ma klucza „nepal” , więc program zwraca „ Nie znaleziono” .

Interesujące artykuły...