【Swift4.0】集合類型-Dictionary

翻譯能力有限,如有不對(duì)的地方伶椿,還請(qǐng)見諒辜伟!希望對(duì)Swift的學(xué)習(xí)者有所幫助,使用的編寫工具:JQNote? ??InNote(iPhone)

Dictionary是一個(gè)字典脊另,存儲(chǔ)的是鍵值對(duì)导狡,也是無序的。每一個(gè)值對(duì)應(yīng)唯一的key偎痛。寫作Dictionary, 其中key是Dictionary中一個(gè)鍵的類型旱捧,Value是Dictionary中與鍵對(duì)應(yīng)的存儲(chǔ)值的類型。Dictionary簡(jiǎn)寫形式為 [Key : Value]

與集合類型Set類似踩麦,Dictionary中的Key類型必須遵守Hashable協(xié)議

創(chuàng)建一個(gè)空的Dictionary

跟Array一樣枚赡,你可以使用初始化語法創(chuàng)建一個(gè)空Dictionary:

var namesOfIntegers = [Int : String] ()

這個(gè)例子創(chuàng)建了一個(gè)空的[Int : String]字典類型氓癌,它的Key是Int類型,Value是String類型标锄。如果代碼上下文已經(jīng)提供了類型信息顽铸,那么可以創(chuàng)建一個(gè)空的Dictionary茁计,使用[ : ].

namesOfIntegers[16] = “Sixteen”

namesOfIntegers = [:].

也可以這樣創(chuàng)建一個(gè)Dictionary:

var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

airports聲明為一個(gè)[String: String]類型的Dictionary料皇,也就是說,它的key是String類型星压,它的Value也是String類型践剂。

與Array一樣,如果初始化值的類型是明確的娜膘,那么也可以不用寫[String: String]:

var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]

因?yàn)槌跏蓟得恳粋€(gè)key都是String逊脯,對(duì)應(yīng)每個(gè)Value也都是String,Swift會(huì)自動(dòng)推斷該Dictionary的類型為[String: String].

獲取和修改Dictionary

跟Array一樣竣贪,你可以使用Dictionary的只讀屬性count來檢查它的存儲(chǔ)項(xiàng)數(shù)量

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

// Prints "The airports dictionary contains 2 items.

使用isEmpty屬性來判斷是否count屬性為0

if airports.isEmpty {

print("The airports dictionary is empty.")

} else {

print("The airports dictionary is not empty.")

}

// Prints "The airports dictionary is not empty.”

使用下標(biāo)索引語法來添加一個(gè)合適類型的key以及對(duì)應(yīng)的值军洼,

airports["LHR"] = "London"

或者改變一個(gè)值

airports["LHR"] = "London Heathrow” “// the value for "LHR" has been changed to "London Heathrow”

也可以使用updateValue(_:forKey:)方法來更新某個(gè)特定key對(duì)應(yīng)的值, 如果不存在,會(huì)添加一個(gè)演怎,如果存在匕争,則更新。并且返回原來的舊值爷耀。

if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {

print("The old value for DUB was \(oldValue).")

}

// Prints "The old value for DUB was Dublin.”

也可以使用下標(biāo)索引:

if let airportName = airports["DUB"] {

print("The name of the airport is \(airportName).")

} else {

print("That airport is not in the airports dictionary.")

}

// Prints "The name of the airport is Dublin Airport.”

刪除一個(gè)鍵值對(duì):

airports["APL"] = "Apple International"

// "Apple International" is not the real airport for APL, so delete it

airports["APL"] = nil

// APL has now been removed from the dictionary”

或者使用removeValue(forKey:)

if let removedValue = airports.removeValue(forKey: "DUB") {

print("The removed airport's name is \(removedValue).")

} else {

print("The airports dictionary does not contain a value for DUB.")

}

// Prints "The removed airport's name is Dublin Airport.”

遍歷Dictionary

可以使用for-in循環(huán)來遍歷一個(gè)Dictionary甘桑,每一項(xiàng)返回一個(gè)(key,value)元組

for (airportCode, airportName) in airports {

print("\(airportCode): \(airportName)")

}

// YYZ: Toronto Pearson

// LHR: London Heathrow

如果想獲取Dictionary中所有的key歹叮,或者所有的value跑杭,可以使用它的keys和values屬性:

let airportCodes = [String](airports.keys)

// airportCodes is ["YYZ", "LHR"]

let airportNames = [String](airports.values)

// airportNames is ["Toronto Pearson", "London Heathrow"]

最后,Dictionary是無序的咆耿,如果想有序的遍歷一個(gè)Dictionary德谅,用sorted()方法在它的keys和values屬性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萨螺,一起剝皮案震驚了整個(gè)濱河市窄做,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屑迂,老刑警劉巖浸策,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惹盼,居然都是意外死亡庸汗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門手报,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚯舱,“玉大人改化,你說我怎么就攤上這事⊥骰瑁” “怎么了陈肛?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)兄裂。 經(jīng)常有香客問我句旱,道長(zhǎng),這世上最難降的妖魔是什么晰奖? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任谈撒,我火速辦了婚禮,結(jié)果婚禮上匾南,老公的妹妹穿的比我還像新娘啃匿。我一直安慰自己,他們只是感情好蛆楞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布溯乒。 她就那樣靜靜地躺著,像睡著了一般豹爹。 火紅的嫁衣襯著肌膚如雪裆悄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天帅戒,我揣著相機(jī)與錄音灯帮,去河邊找鬼。 笑死逻住,一個(gè)胖子當(dāng)著我的面吹牛钟哥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腻贰,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扒秸!你這毒婦竟也來了播演?” 一聲冷哼從身側(cè)響起伴奥,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后询微,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狂巢,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撑毛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年藻雌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疹吃。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹦疑,死狀恐怖西雀,靈堂內(nèi)的尸體忽然破棺而出萨驶,到底是詐尸還是另有隱情,我是刑警寧澤艇肴,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布腔呜,位于F島的核電站,受9級(jí)特大地震影響再悼,放射性物質(zhì)發(fā)生泄漏核畴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一冲九、第九天 我趴在偏房一處隱蔽的房頂上張望谤草。 院中可真熱鬧,春花似錦莺奸、人聲如沸丑孩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽温学。三九已至,卻和暖如春甚疟,著一層夾襖步出監(jiān)牢的瞬間仗岖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工览妖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轧拄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓讽膏,卻偏偏與公主長(zhǎng)得像檩电,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容