我尝试了这个例子并且工作正常:Map two lists into a dictionary in Python
但如果我用这个列表替换“keys”: ['2','3','2','3','4','2','4','2','2','3','2','3',' 4' ]
和“值”与此列表: [2,3,4,5,6,4,2,1,1,2,3,4,5]
dict类试图单独制作一个“值”部分的字典!
输出: {'3':4,'2':3,'4':5}
自己尝试一下,你应该得到同样的答案。为什么和替代这将是伟大的。
答案 0 :(得分:7)
您的密钥列表具有重复值,因此会覆盖早期重复密钥中的值。
>>> keys = ['2', '3', '2-1', '3-1', '4', '2-2', '4-1', '2-3', '2-4', '3-2', '2-5', '3-3', '4-2']
>>> values = [2, 3, 4, 5, 6, 4, 2, 1, 1, 2, 3, 4, 5]
>>> dict(zip(keys, values))
{'2-2': 4, '4-1': 2, '4-2': 5, '2-1': 4, '2-4': 1, '2-3': 1, '2-5': 3, '3-3': 4, '3-2': 2, '3-1': 5, '3': 3, '2': 2, '4': 6}
此外,您可以使用字典的整数键,因此不需要'2'
,您只需使用2
。
答案 1 :(得分:3)
dict要求没有重复的键,但在你的键列表中你有很多重复,所以dict将合并它们。如果您想拥有多个密钥,可以使用multidict实现来实现:
>>> a = ['2', '3', '2', '3', '4', '2', '4', '2', '2', '3', '2', '3', '4']
>>> b = [2, 3, 4, 5, 6, 4, 2, 1, 1, 2, 3, 4, 5]
>>> dict(zip(a, b))
{'3': 4, '2': 3, '4': 5}
>>> multidict.MultiDict(zip(a, b))
MultiDict([('2', 2), ('3', 3), ('2', 4), ('3', 5), ('4', 6), ('2', 4), ('4', 2),
('2', 1), ('2', 1), ('3', 2), ('2', 3), ('3', 4), ('4', 5)])
注意:我使用paste.util.multidict.MultiDict
,按pip install paste
安装。
答案 2 :(得分:2)
字典是散列,这意味着每个密钥只能存在一次。
>>> a = ['2', '3', '2', '3', '4', '2', '4', '2', '2', '3', '2', '3', '4']
>>> b = [2, 3, 4, 5, 6, 4, 2, 1, 1, 2, 3, 4, 5 ]
>>> c = zip(a, b)
>>> c
[('2', 2), ('3', 3), ('2', 4), ('3', 5), ('4', 6), ('2', 4), ('4', 2), ('2', 1), ('2', 1), ('3', 2), ('2', 3), ('3', 4), ('4', 5)]
>>> dict(c)
{'3': 4, '2': 3, '4': 5}