1. 程式人生 > >Python之列表轉字典:setdefault、defaultdict、fromkeys

Python之列表轉字典:setdefault、defaultdict、fromkeys

setdefault

result = {}
data = [("p", 1), ("p", 2), ("p", 3),
        ("h", 1), ("h", 2), ("h", 3)]
for (key, value) in data:
    result.setdefault(key, []).append(value)


print(result)
# {'p': [1, 2, 3], 'h': [1, 2, 3]}

defaultdict

defaultdict是屬於collections 模組下的一個工廠函式,用於構建字典物件,接收一個函式(可呼叫)物件為作為引數。引數返回的型別是什麼,key對應value就是什麼型別。

from collections import defaultdict
result = defaultdict(list)
data = [("p", 1), ("p", 2), ("p", 3),
        ("h", 1), ("h", 2), ("h", 3)]

for (key, value) in data:
    result[key].append(value)
print(result)
for k,v in result.items():
    print(k,v)
"""
defaultdict(<class 'list'>, {'p': [1, 2, 3], 'h': [1, 2, 3]})
p [1, 2, 3]
h [1, 2, 3]
"""

setdefault 的作用是:

  1. 如果 key 存在於字典中,那麼直接返回對應的值,等效於 get 方法

  2. 如果 key 不存在字典中,則會用 setdefault 中的第二個引數作為該 key 的值,再返回該值。

fromkeys

keys = {'a', 'e', 'i', 'o', 'u' }
value = []
d = dict.fromkeys(keys, value)
print(d)
# {'i': [], 'u': [], 'o': [], 'a': [], 'e': []}