在Python中创建具有列表理解功能的词典时获取重复值

在Python中创建具有列表理解功能的词典时获取重复值,python,python-2.7,dictionary,duplicates,Python,Python 2.7,Dictionary,Duplicates,我有两份清单如下: list1 = [0, 0, 1] list2 = [0, 1, 2] d = {k:v for k, v in zipped_list} 我使用以下方法将其压缩: zipped_list = zip(list1,list2) 结果是zipped_list=[(0,0)、(0,1)、(1,2)] 现在,我想使用列表理解创建一个字典,如下所示: list1 = [0, 0, 1] list2 = [0, 1, 2] d = {k:v for k, v in zipped

我有两份清单如下:

list1 = [0, 0, 1]
list2 = [0, 1, 2]
d = {k:v for k, v in zipped_list}
我使用以下方法将其压缩:

zipped_list = zip(list1,list2)
结果是
zipped_list=[(0,0)、(0,1)、(1,2)]
现在,我想使用列表理解创建一个字典,如下所示:

list1 = [0, 0, 1]
list2 = [0, 1, 2]
d = {k:v for k, v in zipped_list}
结果是
d={0:1,1:2}

也就是说,对于
zipped_列表
中的
key=0
,字典只包含最后出现的键、值对

问题是:如何获取重复键的所有出现的键、值对,而不仅仅是最后一个

在这个特定的例子中,我想

d={0: 0, 0: 1, 1: 2}

这是不可能的,因为您不能使用具有重复键的dict

您可以尝试在同一个键下列出所有值的
列表

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> zipped_list = [(0, 0), (0, 1), (1, 2)]
>>> for k,v in zipped_list:
...     d[k].append(v)
... 
>>> d
defaultdict(<type 'list'>, {0: [0, 1], 1: [2]})
>>从集合导入defaultdict
>>>d=默认DICT(列表)
>>>压缩列表=[(0,0)、(0,1)、(1,2)]
>>>对于压缩列表中的k,v:
...     d[k]。追加(v)
... 
>>>d
defaultdict(,{0:[0,1],1:[2]})

基本上@Ashish使用的方法相同,但没有任何外部模块(导入)

是的,这可以通过任何其他可散列数据结构实现,如果它是您所指的键的话<例如,code>list1
可能是
list1=['a','a','b']


如果你觉得设置默认值太花哨了,看看它。

谢谢!我可以用任何其他哈希数据结构来实现这一点吗?