什麼是字典 (Dictionary)?
在 Python 中,字典用來儲存 key -> value
組合的資料,和 JavaScript 的物件 (objects) 非常類似。字典使用 {}
來包裹住資料,每個鍵 (key) 都會對應到一個值 (value):
goblin = {
"name": "Xavier",
"age": 28,
"pet": "Mimiball"
}
不要重複 key
列表利用索引 (index) 來辨別資料,而字典則是依靠鍵 (key)。所以實作上我們不應該在字典中重複使用 key,如果不信邪,你會發現原先的值被覆寫過去了!
goblin = {
"name": "Xavier",
"name": "Neo-Xavier"
"age": 28,
"pet": "Mimiball"
}
上面範例中,哥布林的名字從 Xavier
變成了 Neo-Xavier
,因為兩筆資料的 key 都是 name
,而後面的資料覆寫了前面一筆 key 相同的資料。
操作字典中的資料
基本上不脫離取、增、刪、變四大操作,下面逐一說明。
提取字典中的資料
使用 []
來提取字典中的資料。前面提過字典是靠 key 來辨別每一筆資料,所以我們需要在 []
帶入特定資料的 key,而且要用字串的方式帶入,也就是前後加上 ""
。
goblin = {
"name": "Xavier",
"age": 28,
"pet": "Mimiball"
}
print(goblin["name"])
新增字典資料
實務上我們常常會先建立一個空字典,然後依照商業邏輯陸續新增動態資料到字典中。而新增資料到字典的方式和提取資料大同小異,一樣使用 [key_name]
的模式即可。
goblin = {}
goblin["name"] = "Xavier"
goblin["age"] = 28
goblin["single"] = True
print(f"{goblin["name"]} is {goblin["age"]}. Single? {goblin["single"]}")
更新字典資料
不廢話,一樣透過 [key_name]
來更新值。
goblin = {
"name": "Xavier"
}
goblin["name"] = "Mimiball"
刪除字典資料
和列表一樣,若要刪除資料的話,字典需使用 del
關鍵字。如果我們執意刪除不存在的資料,Python 編譯器會跳錯誤。
goblins_dict = {
"cute": "cute_goblin",
"small": "small_goblin",
"big": "big_goblin"
}
del goblins_dict["big"]
print(goblins_dict)
# Prints: {'cute': 'cute_goblin', 'small': 'small_goblin'}
遞迴字典
透過 in
關鍵字,我們可以輕鬆遞迴字典資料的 key
,而透過 key
又可以提取該筆資料的值。另外,若想知道字典的長度,一樣可以使用 len()
。
def get_most_common_enemy(enemies_dict):
# Return the name of the enemy with the highest count
# If there are no enemies -> return None
# If there are multiple enemies with the same count -> return the first one found
highest_count_so_far = float("-inf")
most_common_enemy = None
if len(enemies_dict) == 0:
return None
for name in enemies_dict:
count = enemies_dict[name]
if count > highest_count_so_far:
highest_count_so_far = enemies_dict[name]
most_common_enemy = name
return most_common_enemy