[英]How can I add all values from a tuple into a dictionary?
假設我有一個三元組列表,我想要一個 function 將它們添加到嵌套字典中,例如兩層深:
lst = [('Watermelon', 200, (1,4)), ('Apple', 100, (2, 23)), ('Apple', 120, (1, 33))]
我想返回一個字典 f ,它看起來像:
f = {'Watermelon': {(1,4): 200}, 'Apple': {(2, 23): 100, (1, 33): 120 }}
這將起作用。 不需要導入,並且比理解型語法更具可讀性。
dictionary = {}
for a, b, c in lst:
if a not in dictionary:
dictionary[a] = {}
dictionary[a][c] = b
隨時進行更正。 這個答案已經排在首位,所以它不應該產生誤導。
import collections as co
dd = co.defaultdict(dict)
for item in lst:
dd[item[0]].update({item[2]:item[1]})
結果:
In [31]: dd
Out[31]:
defaultdict(dict,
{'Watermelon': {(1, 4): 200},
'Apple': {(2, 23): 100, (1, 33): 120}})
最簡單的語法:
{a: {c: b} for a, b, c in lst}
這是一個字典生成,它為列表中的每個項目輸出a: {c: b}
,按順序將它們解包為a, b, c
。
這並不能完全滿足您的需求,因為您有想要變成列表的常用鍵。 其他答案可以做到這一點,雖然它們現在和必須是不那么優雅。 我把這個留在這里是為了幫助任何未來的谷歌員工,他們沒有與你完全相同的要求。
from collections import defaultdict
keys = [name for name, *_ in lst]
vals = [pair for _, *pair in lst]
f = defaultdict(dict)
for key, val in zip(keys, vals):
f[key].update({val[1]: val[0]})
結果:
defaultdict(dict, {'Watermelon': {(1, 4): 200}, 'Apple': {(2, 23): 100, (1, 33): 120}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.