iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
自我挑戰組

從HTML到Python爬蟲的30天之旅系列 第 11

Day 11:Python基本介紹04 | Set、Dictionary

  • 分享至 

  • xImage
  •  

おはよう~昨天我們介紹完了四種Collections的其中兩種 - List、Tuple,而今天要接續介紹另外兩種 - Set、Dictionary

Set(集合)

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(字典)

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格式也用到類似的格式,就先記起來吧!

Collections總整理

Python提供四種Collections,分別是List、Tuple、Set、Dictionary,每個Collection都有各自的特色和使用時機,下面這些不用背起來,經常使用自然就會習慣了。

  • 列表(List):有序且可更改的容器,允許重複的成員。
  • 組合(Tuple):有序且不可更改的容器,允許重複的成員。
  • 集合(Set):無序且未索引的容器,沒有重複的成員。
  • 字典(Dict):無序且未索引的容器,沒有重複的成員,資料格式為key: value

小結

今天介紹了最後兩種容器 - Set和Dictionary各自的特色和使用時機,希望看完這兩天的文章後能幫助你更靈活的使用容器儲存資料><。

因為如果將容器塞在同一天內容會太多,拆開來內容又太少,猶豫過後還是決定拆開來講,所以今天的篇幅比較少一點,請各位見諒OAO。

明天就要來講流程控制和迴圈了,我們明天見!


如果喜歡這系列文章麻煩幫我按Like加訂閱,你的支持是我創作最大的動力~

本系列文章以及範例程式碼都同步更新在GitHub上,後續會持續的更新,如果喜歡也麻煩幫我按個星星吧~

有任何問題或建議,都歡迎在底下留言區提出,還請大家多多指教。


上一篇
Day 10:Python基本介紹03 | List、Tuple
下一篇
Day 12:Python基本介紹05 | 流程控制、迴圈
系列文
從HTML到Python爬蟲的30天之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言