为了账号安全,请及时绑定邮箱和手机立即绑定

将一对列表对象转换为包含重复项的字典

将一对列表对象转换为包含重复项的字典

精慕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 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号