English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift字典(Dictionary)

在本教程中,您将了解什么是字典,如何创建字典以及字典中的一些常见操作。

在上一篇文章中,Swift 数组文章中,我们学习了如何在变量/常量中存储多个值。在本文中,我们将讨论如何将数据/值存储为键值对。

什么是字典?

字典只是一个容器,可以无序地将多个数据作为键值对保存。

每个值都与一个唯一键相关联,并将数据存储在无序列表中作为集合也就是说,您获取元素的顺序与您在字典中定义项目的顺序不同。

当您需要在集合中查找具有某个标识符的值时,可以使用字典而不是数组。 假设你想搜索一下这个国家的首府。 在这种情况下,您将创建一个具有国家和首都城市键值对的字典。 现在,您可以通过搜索键:国家,从集合中获得值:首都。

简单来说,您将键与值配对。在上面的示例中,我们将一个国家与其首都配对。

如何在Swift中声明字典?

您可以通过在方括号[]中指定key:value数据类型来创建空字典。

示例1:声明一个空字典

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

运行该程序时,输出为:

[:]
oppure

还可以如下定义一个空字典:

let emptyDic: Dictionary<Int, String> = [:]
print(emptyDic)

Nel programma sopra, abbiamo dichiarato una costante di tipo dictionary chiamata emptyDic con key di tipo Int e value di tipo String, e l'abbiamo inizializzata con un valore 0.

oppure

Poiché Swift è un linguaggio di inferenza del tipo, è possibile creare una mappa direttamente senza specificare il tipo di dati, ma è necessario inizializzarla con alcuni valori in modo che il compilatore possa inferirne:

Esempio 2: Dichiarazione di una mappa con determinati valori

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

运行该程序时,输出为:

["b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, "h": 8]

Nel programma sopra, abbiamo dichiarato una mappa ma non l'abbiamo definita esplicitamente con un tipo, ma l'abbiamo inizializzata con alcuni elementi di default.

Gli elementi si trovano in coppie key:value, dove il tipo di key è String e il tipo di value è Int. Poiché la mappa non è una lista ordinata, print(someDic) esce i valori in un ordine diverso da quello definito.

Esempio 3: Creazione di una mappa da due array

Possiamo anche creare una mappa utilizzando un array.

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

运行该程序时,输出为:

["Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark"]

Nel programma sopra, zip(customKeys,customValues) crea una nuova sequenza di tuple, ognuna delle quali rappresenta un valore proveniente da customKeys e customValues.

Ora, possiamo passare questa sequenza a Dictionary(Unique eKeysWithValues:) per impostare il valore iniziale e creare una nuova mappa. Pertanto, print(NewDictionary) produce una nuova mappa che contiene gli elementi di due array.

Come accedere agli elementi della mappa in Swift?

Come array, è possibile accedere agli elementi della mappa utilizzando la sintassi degli indici. È necessario includere nel parentesi quadre che seguono il nome della mappa la chiave da accedere.

Esempio 4: Accesso agli elementi della mappa

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"])

运行该程序时,输出为:

Optional(1)
Optional(8)

Puoi anche accedere agli elementi del dizionario utilizzando il ciclo for-in.

Esempio 5: Accesso agli elementi del dizionario utilizzando il ciclo 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)")
}

运行该程序时,输出为:

key:b value:2
key:a value:1
key:i value:9
key:c value:3
key:e value:5
key:f value:6
key:g value:7

Come modificare un elemento nel dizionario in Swift?

Puoi aggiungere elementi nel dizionario utilizzando la sintassi degli indici. Devi includere Nuova chiave Come indicatore di posizione, assegna un nuovo valore al tipo Dictionary.

Esempio 6: Impostazione dell'elemento nel dizionario

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

运行该程序时,输出为:

["Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu"]

Nell'esempio sopra, abbiamo utilizzato la sintassi degli indici per creare una nuova coppia di chiave-valore "Japan": "Tokyo" nel dizionario dato.

Puoi anche utilizzare la sintassi degli indici per modificare il valore associato a una chiave specifica:

Esempio 7: Modifica dell'elemento del dizionario

varsomeDictionary=["Nepal":"Kathmandu","China":"Beijing","India":"NewDelhi"]
someDictionary["Nepal"] = "KATHMANDU"
print(someDictionary)

运行该程序时,输出为:

["China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU"]

Funzioni e proprietà integrate nel dizionario

1. Proprietà isEmpty - Determina se il dizionario è vuoto

Questa proprietà determina se il dizionario è vuoto. Se il dizionario non contiene alcun valore, restituisce true, altrimenti restituisce false.

Esempio 8: Come funziona isEmpty?

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

运行该程序时,输出为:

false

2. Proprietà first - Restituisce l'elemento primo del dizionario

Questa proprietà serve per accedere all'elemento primo del dizionario.

Esempio 9: Come funziona all'inizio?

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

运行该程序时,输出为:

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

3.count - Restituisce il numero totale di elementi del dizionario

Questa proprietà restituisce il numero totale di elementi (chiave/valore) nel dizionario.

Esempio 10: Come funziona il conteggio?

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

运行该程序时,输出为:

3

4. Proprietà keys - Restituisce tutte le chiavi del dizionario

Questa proprietà restituisce tutte le chiavi del dizionario.

Esempio 11: Come funziona keys?

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

运行该程序时,输出为:

["China", "India", "Nepal"]

Analogamente, è possibile utilizzare  values proprietà per ottenere tutti i valori del dizionario.

5. removeValue

Questa funzione viene utilizzata per eliminare e restituire il valore specificato dalla chiave dal dizionario. Questi due elementi chiave/valore saranno eliminati dal dizionario.

Esempio 12: Come funziona removeValue()?

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

运行该程序时,输出为:

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

Analogamente, è possibile utilizzare removeAll La funzione svuota il dizionario.

Attenzione

1.Quando si accede agli elementi di un dizionario utilizzando la sintassi degli indici in Swift, è necessario assicurarsi che la chiave sia presente nell'indice, altrimenti si otterrànilvalore. Vediamo un esempio:

Esempio 13: La chiave deve esistere

varsomeDictionary=["Nepal":"Kathmandu","China":"Beijing","India":"NewDelhi"]
let val = someDictionary["Giappone"]
print(val)

运行该程序时,输出为:

nil

Nella procedura sopra riportata, non esiste una chiave Giappone . Pertanto, quando si tenta di accedere alla chiave "Giappone ” otterrà un valore nil.

2.Analogamente, le chiavi e i valori sono distinguibili per caso in Swift, quindi è necessario assicurarsi di utilizzare la chiave/valore con la corretta minuscolizzazione. Altrimenti, si otterrà un valore nil. Vediamo un esempio:

Esempio 14: Distinzione tra maiuscole e minuscole delle chiavi

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

运行该程序时,输出为:

nil

Nella procedura sopra riportata, non esiste la chiave "nepal". Pertanto, quando si tenta di accedere alla chiave "nepal", si ottiene un valore nil.

3.如果给定键的值不存在,则还有一种方法可以提供默认值。让我们在示例中看一下:

示例12:不存在的键的默认值

varsomeDictionary=["Nepal":"Kathmandu","China":"Beijing","India":"NewDelhi"]
letval=someDictionary["nepal",default:"Not Found"]
print(val)

运行该程序时,输出为:

未找到

在上述程序中,我们在访问字典时在默认参数中指定了一个默认值。如果键的值不存在,则返回默认值,否则返回该值

在我们的实例中,键“nepal”不存在,因此程序返回默认值: 未找到