Swift 字典的了解

2021-08-29 05:19:50 字數 3963 閱讀 6503

字典儲存時,key和value值的型別都是固定的,且都是無序的。

1.字典型別的縮寫語法

在swift中,字典的完整格式如下:

dictionary

注意:字典的key型別必須符合 雜湊演算法。

字典的縮寫格式如下:

[key: value]

雖然完整格式和縮寫格式都可以,但是下面介紹字典時主要是以縮寫格式為主。

2.建立乙個空的字典

當初始化乙個空的字典時,可以直接初始化其key和value值的型別,如下:

var namesofintegers = [int: string]()

// namesofintegers is an empty [int: string] dictionary

如下的例子,可以理解為:key為int型別,value為string型別。

如果字典的元素可以判斷出其key和value的值,那麼可以建立乙個格式為 [:] 的空字典:

namesofintegers[16] = "sixteen"

// namesofintegers now contains 1 key-value pair

namesofintegers = [:]

// namesofintegers is once again an empty dictionary of type [int: string]

3. 建立乙個字典並初始化字典的值

在字典中,key和value的值以「:」號區分開,每一對key和value的值用逗號隔開。

[key 1: value 1, key 2: value 2, key 3: value 3]

如下的例子:

var airports: [string: string] = ["yyz": "toronto pearson", "dub": "dublin"]

正如陣列一樣,如果建立乙個字典並初始化字典的key和value的值時,不需要寫字典中key和value值的型別。如下:

var airports = ["yyz": "toronto pearson", "dub": "dublin"]

從上面的例子中,swift可以推斷出,該字典的key和value的型別都是string型別。

4.字典的取值與修改

你可以用字典的相關方法、屬性和下標語法對字典進行取值和修改的操作。

<1>可以用唯讀屬性count來獲取字典元素的個數;

print("the airports dictionary contains \(airports.count) items.")

// prints "the airports dictionary contains 2 items."

<2>用isempty的布林值屬性判斷字典的count屬性是否為0;

if airports.isempty  else 

// prints "the airports dictionary is not empty."

<3>用下標語法新增乙個新的元素,往字典新增乙個新的key和value值,如下:

airports["lhr"] = "london"

// the airports dictionary now contains 3 items

也可以用下標語法來修改字典的值:

airports["lhr"] = "london heathrow"

// the value for "lhr" has been changed to "london heathrow"

用updatevalue(_:forkey:)的方法來新增或者修改字典key中的value值。如果這個key值存在,就更新這個key的value值;如果這個key值不存在,就新增。與下標不同的是,updatevalue(_:forkey:)方法在執行更新後返回key對應的舊值,這使您能夠檢查是否發生了更新。這個舊值是可選值,如果更新的這個key值存在的話,這個可選值就是更新前key對應value的值,否者的話,返回nil。

if let oldvalue = airports.updatevalue("dublin airport", forkey: "dub") 

// prints "the old value for dub was dublin."

可以用下標語言來獲取乙個字典中key對應的value值,因為key可能不存在在字典中,所以該返回值為可選值,如果key值存在,就返回對應的value值;如果不存在,就返回nil;

if let airportname = airports["dub"]  else 

// prints "the name of the airport is dublin airport."

可以通過把key對應的value值設定為nil的方法來刪除key-value的值;

airports["apl"] = nil

// apl has now been removed from the dictionary

// apl has now been removed from the dictionary

用removevalue(forkey:)的方法刪除字典中的key-value值,呼叫這個方法時,如果key值存在的話,返回的是remove的值,如果不存在就返回nil;

if let removedvalue = airports.removevalue(forkey: "dub")  else 

// prints "the removed airport's name is dublin airport."

5.遍歷字典

可以用for-in遍歷字典中的key-value值,每乙個元素以(key, vlue)的元組返回;您可以將tuple的成員分解為臨時常量或變數,作為迭代的一部分;

for (airportcode, airportname) in airports 

// yyz: toronto pearson

// lhr: london heathrow

用字典中的keys 和 values 屬性來獲取字典中所有的屬性或者value值;

for airportcode in airports.keys 

// airport code: yyz

// airport code: lhr

for airportname in airports.values

// airport name: toronto pearson

// airport name: london heathrow

如果需要將字典中所有的key和value值,以字典的形式返回的話,可以用字典中的keys和values屬性來初始化乙個新的陣列:

let airportcodes = [string](airports.keys)

// airportcodes is ["yyz", "lhr"]

let airportnames = [string](airports.values)

// airportnames is ["toronto pearson", "london heathrow"]

6. 字典是無序的,如果需要對字典排序的話,請對字典的keys 和 values 屬性 用sorted() 的方法。

Swift字典的使用

swift語言中的字典和陣列是一樣的,都要求所儲存的資料型別一致,他們是型別安全的,在使用的時候,能夠明確其中儲存的資料型別。一 字典的宣告和初始化 var dic1 1 1,2 2,3 3 var dic2 dictionary var dic3 dictionary var dic4 strin...

Swift字典集合

字典表示一種非常複雜的集合,允許按照某個鍵來訪問元素。字典是由兩部分集合構成的,乙個是鍵 key 集合,乙個是值 value 集合。鍵集合是不能有重複元素的,而值集合是可以重複的,鍵和值是成對出現的。如下圖所示是字典結構的 學號與學生 集合,學號是鍵集合,不能重複,學生是值集合,可以重複。提示 字典...

Swift 字典的常用方法

要正確使用字典,也需要一些條件 1,字典鍵值對的 鍵和值的型別必須明確,可以直接指定,也可以類似陣列直接賦值由編譯器自動識別 2,字典必須要初始化 3,鍵的型別必須是可以被雜湊 hashable 的 基本資料型別和可以被雜湊的類 字典的幾種宣告方式 var dic1 1 1,2 12,3 32,4 ...