Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看專案原始碼
本篇閱讀的代碼實作了將一個字典進行反轉,且原字典的值非唯一,
本篇閱讀的代碼片段來自于30-seconds-of-python,
collect_dictionary
def collect_dictionary(obj):
inv_obj = {}
for key, value in obj.items():
inv_obj.setdefault(value, list()).append(key)
return inv_obj
# EXAMPLES
ages = {
"Peter": 10,
"Isabel": 10,
"Anna": 9,
}
collect_dictionary(ages) # { 10: ["Peter", "Isabel"], 9: ["Anna"] }
collect_dictionary函式接收一個字典,回傳反轉后的字典,函式使用dictionary.items()回圈獲取每一個原字典的鍵值對,使用dictionary.setdefault()和append()將原字典的值映射到鍵上,使用list()將新鍵的值定義為串列,
因為原字典的所有值不唯一,反轉字典之后,新的鍵也可能對應多個值,因此反轉后的字典的值是一個串列,每個串列中的元素是原字典的一個或多個鍵,
dictionary. setdefault(key[, default])如果字典存在鍵key,回傳它的值,如果不存在,插入值為default的鍵key,并回傳default,
for key, value in obj.items():
inv_obj.setdefault(value, list()).append(key)
如果新的字典inv_obj已經有key == value,就會回傳這個key對應的值(一個串列),然后使用append將原字典的鍵加入其中,如果新的字典inv_obj沒有key == value,就會插入這個key,設定它的值為list(),并回傳這個空串列,然后使用append將原字典的鍵加入其中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/354435.html
標籤:Python
