我使用的是Python 2.7。 我有两个很长的 list :
id=['avc-asd','asd-red'.....]
name=['car','toy',.....]
print len(id) #600
print len(name) #600
my_dict=dict(zip(id,name))
print len(my_dict) #20
print my_dict
#{'avcf-asd':'car','asd-red':'toy'...}
知道为什么会发生截断吗? :-/
<小时/>我也尝试过使用 izip_longest 但得到了相同的结果。
from itertools import izip_longest
my_dict=dict(izip_longest(id,name))
print len(my_dict) #20
最佳答案
我已将我的评论移至答案帖子,因为 OP 已表明它解决了问题。
基本上,您需要确保字典的键是唯一的,而且正如您所指出的,zip
内容的顺序很重要。考虑以下示例代码:
>>> ids = ['1', '2', '3']
>>> names = ['a', 'b', 'a']
>>> dict(zip(ids, names)) # works fine; no duplicates in ids
{'1': 'a', '3': 'a', '2': 'b'}
>>> dict(zip(names, ids)) # truncates due to duplicates in names
{'a': '3', 'b': '2'}
关于python zip 2长列表作为字典截断错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181128/