我有兩個字典串列,如下所示:
name = ['A','A','B','B','C','D','D','D']
num = [10, 20, 30, 40, 50, 60, 70, 80]
我想將它們合并為鍵的“名稱”和字典值的“數字”。但是對于每個鍵,如果它有多個值,我想添加它們而不丟失任何“num”。我試著這樣做
dict={}
for key,value in zip(name,num):
if key not in dict:
dict[key]=[value]
else:
dict[key].append(value)
print(dict)
我得到了像
{'A': [10, 20], 'B': [30, 40], 'C': [50], 'D': [60, 70, 80]}
我希望最終輸出如下:
{'A': 30, 'B': 70, 'C': 50, 'D': 210}
此處將添加每個鍵的每個專案,而不是顯示串列。我該如何解決這個問題?
謝謝
uj5u.com熱心網友回復:
嘗試這個:
name = ['A', 'A', 'B', 'B', 'C', 'D', 'D', 'D']
num = [10, 20, 30, 40, 50, 60, 70, 80]
dict = {}
for key, value in zip(name, num):
if key not in dict:
dict[key] = value
else:
dict[key] = value
print(dict)
uj5u.com熱心網友回復:
而不是附加,您需要添加值
dict_={}
for key,value in zip(name,num):
if key not in dict_:
dict_[key]=value
else:
dict_[key]=dict_[key] value
print(dict_)
uj5u.com熱心網友回復:
不要將相同鍵的值附加到串列中,只需在迭代時添加它們。
像下面的東西。
name = ['A','A','B','B','C','D','D','D']
num = [10, 20, 30, 40, 50, 60, 70, 80]
dict={}
for key,value in zip(name,num):
if key not in dict:
dict[key]=value
else:
dict[key] =value
print(dict)
uj5u.com熱心網友回復:
考慮使用:collections.Counter
from collections import Counter
name = ['A', 'A', 'B', 'B', 'C', 'D', 'D', 'D']
num = [10, 20, 30, 40, 50, 60, 70, 80]
c = Counter()
for key, value in zip(name, num):
c[key] = value
d = dict(c)
print(d)
或者:collections.defaultdict
from collections import defaultdict
name = ['A', 'A', 'B', 'B', 'C', 'D', 'D', 'D']
num = [10, 20, 30, 40, 50, 60, 70, 80]
d = defaultdict(int)
for key, value in zip(name, num):
d[key] = value
d = dict(d)
print(d)
輸出:
{'A': 30, 'B': 70, 'C': 50, 'D': 210}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456023.html
上一篇:如何更新JSON檔案中的字典鍵?
