Swift 字典(Dictionary)

在本教程中,您將了解什么是字典,如何創(chuàng)建字典以及字典中的一些常見操作。

在上一篇Swift 數(shù)組文章中,我們學習了如何在變量/常量中存儲多個值。在本文中,我們將討論如何將數(shù)據(jù)/值存儲為鍵值對。

什么是字典?

字典只是一個容器,可以無序地將多個數(shù)據(jù)作為鍵值對保存。

每個值都與一個唯一鍵相關聯(lián),并將數(shù)據(jù)存儲在無序列表中作為集合,也就是說,您獲取元素的順序與您在字典中定義項目的順序不同。

當您需要在集合中查找具有某個標識符的值時,可以使用字典而不是數(shù)組。 假設你想搜索一下這個國家的首府。 在這種情況下,您將創(chuàng)建一個具有國家和首都城市鍵值對的字典。 現(xiàn)在,您可以通過搜索鍵:國家,從集合中獲得值:首都。

簡單來說,您將鍵與值配對。在上面的示例中,我們將一個國家與其首都配對。

如何在Swift中聲明字典?

您可以通過在方括號[]中指定key:value數(shù)據(jù)類型來創(chuàng)建空字典。

示例1:聲明一個空字典

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ù)類型,但必須使用一些值進行初始化,以便編譯器可以將其推斷為:

示例2:聲明具有某些值的字典

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)以不同于定義的順序輸出值。

示例3:從兩個數(shù)組創(chuàng)建字典

我們還可以使用數(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ù)組的元素。

如何在Swift中訪問字典元素?

作為數(shù)組,可以使用下標語法訪問字典的元素。您需要在字典名稱后面的方括號中包含要訪問的值的鍵。

示例4:訪問字典的元素

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)訪問字典的元素。

示例5:使用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

如何在Swift中修改字典元素?

可以使用下標語法在字典中添加的元素。您需要包含 新的鍵 作為下標索引,并為Dictionary類型分配一個新值。

示例6:在字典中設置元素

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)的值更改為:

示例7:更改字典的元素

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

運行該程序時,輸出為:

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

字典內置函數(shù)和屬性

1. isEmpty 屬性 - 判斷字典是否為空

此屬性確定字典是否為空。如果字典中不包含任何值,它返回true,否則返回false。

示例8:isEmpty如何工作?

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

運行該程序時,輸出為:

false

2.first 屬性 - 返回字典第一個元素

此屬性用于訪問字典的第一個元素。

示例9:首先如何工作?

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

運行該程序時,輸出為:

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

3.count - 返回字典元素總數(shù)

此屬性返回字典中的元素總數(shù)(鍵值對)。

示例10:計數(shù)如何工作?

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

運行該程序時,輸出為:

3

4.keys 屬性 - 返回字典中所有的鍵

此屬性返回字典中的所有鍵。

示例11:keys 如何工作?

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

運行該程序時,輸出為:

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

同樣,您可以使用  values 屬性來獲取字典中的所有值。

5. removeValue

此函數(shù)用于從字典中刪除并返回使用鍵指定的值。 這兩個鍵值對都將從字典中刪除。

示例12:removeValue()如何工作?

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值。讓我們在示例中看一下:

示例13:鍵必須存在

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

運行該程序時,輸出為:

nil

在上述程序中,沒有鍵的 Japan 。因此,當您嘗試訪問鍵“Japan ”時,您將獲得一個 nil 值。

2.同樣,鍵值在Swift中區(qū)分大小寫,因此您必須確保使用正確的大小寫鍵/值。 否則,您將獲得nil值。 讓我們在示例中看一下:

示例14:鍵區(qū)分大小寫

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

運行該程序時,輸出為:

nil

在以上程序中,沒有鍵“nepal”。因此,當您嘗試訪問鍵“nepal”時,您將獲得一個 nil 值。

3.如果給定鍵的值不存在,則還有一種方法可以提供默認值。讓我們在示例中看一下:

示例12:不存在的鍵的默認值

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。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清