我可以將兩個列表放入字典中,如下所示 -list1 = [1,2,3,4]list2 = ['a','b','c','d']dct = dict(zip(list1, list2))print(dct)結果,{1: 'a', 2: 'b', 3: 'c', 4: 'd'}然而,重復如下,list3 = [1,2,3,3,4,4]list4 = ['a','b','c','d','e','f']dct_ = dict(zip(list1, list2))print(dct)我明白了,{1: 'a', 2: 'b', 3: 'c', 4: 'd'}我應該怎么做才能將列表中的重復項視為結果字典中的單個鍵?我期待以下結果 -{1: 'a', 2: 'b', 3: 'c', 3: 'd', 4: 'e', 4: 'f'}
2 回答

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
相反,您可以使用值作為列表創建字典:
from collections import defaultdict
d = defaultdict(list)
for k,v in zip(list3, list4):
d[k].append(v)
defaultdict(list, {1: ['a'], 2: ['b'], 3: ['c', 'd'], 4: ['e', 'f']})

慕桂英4014372
TA貢獻1871條經驗 獲得超13個贊
字典中不能有重復的鍵。但是,您可以將多個值(一個列表)映射到每個鍵。
一個簡單的方法是dict.setdefault():
list3 = [1,2,3,3,4,4]
list4 = ['a','b','c','d','e','f']
d = {}
for x, y in zip(list3, list4):
d.setdefault(x, []).append(y)
print(d)
# {1: ['a'], 2: ['b'], 3: ['c', 'd'], 4: ['e', 'f']}
另一種選擇是使用 a collections.defaultdict(),如@YOLO's answer 所示。
添加回答
舉報
0/150
提交
取消