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

我可以将两个列表放入字典中,如下所示 -


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'}


精慕HU
浏览 159回答 2
2回答

HUX布斯

相反,您可以使用值作为列表创建字典:from collections import defaultdictd = 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

字典中不能有重复的键。但是,您可以将多个值(一个列表)映射到每个键。一个简单的方法是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 所示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python