おはよう~昨天我們介紹完了四種Collections的其中兩種 - List、Tuple,而今天要接續介紹另外兩種 - Set、Dictionary。
Set是無序、沒有索引值且沒有重複的成員的容器,可以想成紀錄糖果口味的清單,因為口味不能重複,所以只有唯一一個。
candyFlavor = {"apple", "strawberry", "mango", "mango"}
print(candyFlavor)
Set是用 大括號 所包圍,並用 逗號 區隔每筆資料。
也可以使用set()
將產生空的Set,或將其他容器轉為Set。
執行結果:
{'mango', 'apple', 'strawberry'}
這邊可以注意到"mango"只有唯一一個,而且順序每次都是隨機的。
使用add(data)
在集合中新增資料。
candyFlavor.add("orange")
print(candyFlavor)
顯示結果:
{'mango', 'apple', 'strawberry', 'orange'}
使用remove(data)
移除集合中的資料。
candyFlavor.remove("orange")
print(candyFlavor)
顯示結果:
{'mango', 'apple', 'strawberry'}
將兩個集合合併,重複的元素只會出現唯一一個,就像是你國中學的兩個集合取聯集這樣。
newFlavor = {"apple", "banana"}
candyFlavor.update(newFlavor)
print(candyFlavor)
執行結果:
{'apple', 'banana', 'mango', 'strawberry'}
可以看的出來 "apple" 只有一個。
Set因為有不可重複的特性(使用hashtable實現),所以相當適合用於不希望有重複值的場合,像是:水果種類,人名...,可省去檢查是否有重複值的成本。
Dictionary也是無序、沒有索引值且沒有重複的成員的容器,和Set差別在於資料以一對對的Pair所組成,Pair的語法是key: value
,一個key對應一個value,key不一定要是字串,但必須是唯一的。
也可以使用dict()
將產生空的Dictionary。
candyNumber = {"apple": 5, "strawberry": 10, "mango": 3}
簡單點可以想像成紀錄糖果口味以及數量的清單,key是糖果口味,value是該口味的數量。
語法是dict[key]
,利用key來存取數量。dict[key] = value
就可以改變數量。
print(candyNumber["apple"])
candyNumber["apple"] = 6
print(candyNumber)
執行結果:
5
{'apple': 6, 'strawberry': 10, 'mango': 3}
也很簡單,只要給新的key就會產生新的資料。
candyNumber["banana"] = 8
print(candyNumber)
執行結果:
{'apple': 6, 'strawberry': 10, 'mango': 3, 'banana': 8}
使用pop(key)
移除該key值的資料。
candyNumber.pop("banana")
print(candyNumber)
執行結果:
{'apple': 6, 'strawberry': 10, 'mango': 3}
使用keys()
取得所有key值,回傳是所有key的List。
使用values()
取得所有value值,回傳是所有value的List。
使用item()
取得所有資料組,回傳是由(key, value)
所組成的List。
print(candyNumber.keys())
print(candyNumber.values())
print(candyNumber.items())
執行結果:
dict_keys(['apple', 'strawberry', 'mango'])
dict_values([6, 10, 3])
dict_items([('apple', 6), ('strawberry', 10), ('mango', 3)])
Dictionary跟其他三種容器比較不同,他是複合型的資料型態,也就是由一組key對應到一個value,因此用途非常的廣泛,常用於紀錄兩筆數值間的關係,另外,之後爬蟲會提到的json格式也用到類似的格式,就先記起來吧!
Python提供四種Collections,分別是List、Tuple、Set、Dictionary,每個Collection都有各自的特色和使用時機,下面這些不用背起來,經常使用自然就會習慣了。
key: value
。今天介紹了最後兩種容器 - Set和Dictionary各自的特色和使用時機,希望看完這兩天的文章後能幫助你更靈活的使用容器儲存資料><。
因為如果將容器塞在同一天內容會太多,拆開來內容又太少,猶豫過後還是決定拆開來講,所以今天的篇幅比較少一點,請各位見諒OAO。
明天就要來講流程控制和迴圈了,我們明天見!
如果喜歡這系列文章麻煩幫我按Like加訂閱,你的支持是我創作最大的動力~
本系列文章以及範例程式碼都同步更新在GitHub上,後續會持續的更新,如果喜歡也麻煩幫我按個星星吧~
有任何問題或建議,都歡迎在底下留言區提出,還請大家多多指教。