在本教程中,您將了解什么是字典,如何創(chuàng)建字典以及字典中的一些常見操作。
在上一篇Swift 數(shù)組文章中,我們學習了如何在變量/常量中存儲多個值。在本文中,我們將討論如何將數(shù)據(jù)/值存儲為鍵值對。
字典只是一個容器,可以無序地將多個數(shù)據(jù)作為鍵值對保存。
每個值都與一個唯一鍵相關聯(lián),并將數(shù)據(jù)存儲在無序列表中作為集合,也就是說,您獲取元素的順序與您在字典中定義項目的順序不同。
當您需要在集合中查找具有某個標識符的值時,可以使用字典而不是數(shù)組。 假設你想搜索一下這個國家的首府。 在這種情況下,您將創(chuàng)建一個具有國家和首都城市鍵值對的字典。 現(xiàn)在,您可以通過搜索鍵:國家,從集合中獲得值:首都。
簡單來說,您將鍵與值配對。在上面的示例中,我們將一個國家與其首都配對。
您可以通過在方括號[]中指定key:value數(shù)據(jù)類型來創(chuàng)建空字典。
let emptyDic:[Int:String] = [:] print(emptyDic)
運行該程序時,輸出為:
[:]或者
您還可以如下定義一個空字典:
let emptyDic:Dictionary<Int, String> = [:] print(emptyDic)
在上面的程序中,我們用Int類型的key和String類型的value聲明了一個dictionary類型的常量emptyDic,并用0值初始化了它。
或者
由于Swift是一種類型推斷語言,因此您也可以直接創(chuàng)建字典而無需指定數(shù)據(jù)類型,但必須使用一些值進行初始化,以便編譯器可以將其推斷為:
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]
在上面的程序中,我們聲明了一個字典,但沒有顯式定義類型,而是使用一些默認元素進行了初始化。
元素位于key:value對中,其中key的類型為String,而value的類型為Int。 由于字典是無序列表,因此print(someDic)以不同于定義的順序輸出值。
我們還可以使用數(shù)組創(chuàng)建字典。
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"]
在上面的程序中,zip(customKeys,customValues)創(chuàng)建一個新的 元組序列,每個元素代表來自customKeys和customValues的值。
現(xiàn)在,我們可以將此序列傳遞給 Dictionary(Unique eKeysWithValues:) 初始值設定項并創(chuàng)建一個新的Dictionary。 因此,print(NewDictionary)輸出一個新的Dictionary,其中包含來自兩個數(shù)組的元素。
作為數(shù)組,可以使用下標語法訪問字典的元素。您需要在字典名稱后面的方括號中包含要訪問的值的鍵。
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)
您也可以使用for-in循環(huán)訪問字典的元素。
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
可以使用下標語法在字典中添加的元素。您需要包含 新的鍵 作為下標索引,并為Dictionary類型分配一個新值。
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] someDictionary["Japan"] = "Tokyo" print(someDictionary)
運行該程序時,輸出為:
["Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu"]
在上面的示例中,我們使用下標語法在給定的詞典中創(chuàng)建了一個新的鍵值對 "Japan": "Tokyo" 。
您還可以使用下標語法將與特定鍵關聯(lián)的值更改為:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] someDictionary["Nepal"] = "KATHMANDU" print(someDictionary)
運行該程序時,輸出為:
["China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU"]
此屬性確定字典是否為空。如果字典中不包含任何值,它返回true,否則返回false。
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.isEmpty)
運行該程序時,輸出為:
false
此屬性用于訪問字典的第一個元素。
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.first)
運行該程序時,輸出為:
Optional((key: "China", value: "Beijing"))
此屬性返回字典中的元素總數(shù)(鍵值對)。
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.count)
運行該程序時,輸出為:
3
此屬性返回字典中的所有鍵。
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let dictKeys = Array(someDictionary.keys) print(dictKeys)
運行該程序時,輸出為:
["China", "India", "Nepal"]
同樣,您可以使用 values 屬性來獲取字典中的所有值。
此函數(shù)用于從字典中刪除并返回使用鍵指定的值。 這兩個鍵值對都將從字典中刪除。
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary.removeValue(forKey: "Nepal") print(val) print(someDictionary)
運行該程序時,輸出為:
Optional("Kathmandu") ["India": "NewDelhi", "China": "Beijing"]
同樣,您也可以使用 removeAll 函數(shù)清空字典。
1.在Swift中使用下標語法訪問字典中的元素時,必須確保鍵位于索引中,否則將獲得nil值。讓我們在示例中看一下:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["Japan"] print(val)
運行該程序時,輸出為:
nil
在上述程序中,沒有鍵的 Japan 。因此,當您嘗試訪問鍵“Japan ”時,您將獲得一個 nil 值。
2.同樣,鍵值在Swift中區(qū)分大小寫,因此您必須確保使用正確的大小寫鍵/值。 否則,您將獲得nil值。 讓我們在示例中看一下:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["nepal"] print(val)
運行該程序時,輸出為:
nil
在以上程序中,沒有鍵“nepal”。因此,當您嘗試訪問鍵“nepal”時,您將獲得一個 nil 值。
3.如果給定鍵的值不存在,則還有一種方法可以提供默認值。讓我們在示例中看一下:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["nepal", default:"Not Found"] print(val)
運行該程序時,輸出為:
Not Found
在上述程序中,我們在訪問字典時在默認參數(shù)中指定了一個 default 值。 如果鍵的值不存在,則返回默認值,否則返回該值
在我們的實例中,鍵“ nepal”不存在,因此程序返回default 值: Not Found。