亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將一對列表對象轉換為包含重復項的字典

將一對列表對象轉換為包含重復項的字典

精慕HU 2021-09-11 15:54:55
我可以將兩個列表放入字典中,如下所示 -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']})


查看完整回答
反對 回復 2021-09-11
?
慕桂英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 所示。


查看完整回答
反對 回復 2021-09-11
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號