1.順序不重要? 在容器中持有一組數(shù)據(jù),在需要時(shí)拿出來 這就要用字典
2.鍵必須是唯一的
3.Swift 中Dictionary 類型的鍵必須可散列也就是每個(gè)key必須提供一種機(jī)制讓Dictionary保證任何給定的鍵都是唯一的
4.聲明Dictionary實(shí)例
vardict1:Dictionary=[:] ->創(chuàng)建Dictionary空實(shí)例,提供的類型約束鍵和值
vardict2=Dictionary() 默認(rèn)初始方法 準(zhǔn)備一個(gè)空的字典實(shí)例
vardict3:[String:Double]=[:]
vardict4=[String:Double]()
5.輸出鍵值對(duì)的個(gè)數(shù)
varmovieRatings = ["Donnie Darko":4,"Chungking Express":5,"Dark City":4]
print(movieRatings.count)
6.用鍵取值
letdarkRating =movieRatings["Donnie Darko"]
//darkRating類型是int?但movieRatings是[String: Int]中的值Int
為什么?
因?yàn)檫@時(shí)候darkRating還沒有賦值。類型為Int?并且被置為nil
7.更新值
(1)movieRatings["Dark City"] =5
movieRatings
(2)//updateValue(_:forKey:)
//更新的值,哪個(gè)鍵對(duì)應(yīng)的值要更新
//這個(gè)方法之所以有用,它能保存更新之前該鍵所對(duì)應(yīng)的值
letoldRating:Int? =movieRatings.updateValue(5, forKey:"Donnie Darko")
ifletlastRating =oldRating,letcurrentRating =movieRatings["Donnie Darko"] {
print("Old rating:\(lastRating); current rating:\(currentRating)")
}
8.增加鍵值對(duì)
movieRatings["The Cabinet of Dr. Caligari"] =5
9.鍵作為參數(shù),刪除鍵值對(duì)
(1)movieRatings.removeValue(forKey:"Dark City")
(2)
//let removedRating: Int? = movieRatings.removeValue(forKey: "Dark City")
//與更新類似可以返回一個(gè)被刪除的實(shí)例的可空類型賦值給可空類型的常量
(3)
movieRatings["Dark City"] =nil
//不會(huì)返回被刪除鍵的值
10.循環(huán)字典
//Swift的Dictionary類型為遍歷實(shí)例中的每個(gè)元素的鍵值對(duì)提供了一個(gè)方便的機(jī)制,這種機(jī)制通過表示鍵和值的臨時(shí)常量把每個(gè)元素作為組成部分.這些常量放在一個(gè)元祖中,for-in循環(huán)可以在循環(huán)體內(nèi)訪問
//(1)循環(huán)遍歷鍵值
for(key, value)inmovieRatings{
print("The movie\(key) was rated\(value).")
}
//(2)循環(huán)便利鍵
formovieinmovieRatings.keys{
print("User has rated\(movie).")
}
11.創(chuàng)建不可變數(shù)組
letalbum = ["Diet Roast Beef":268,
"Dubba Dubbs Stubs His Toe":467,
"Smokey's Carpet Cleaning Service":187,
"Track 4":221]
album
12.把字典轉(zhuǎn)換為數(shù)組
letwatchedMovies =Array(movieRatings.keys)