python zip 2 长列表为字典截断错误
python zip 2 long lists as dictionary truncation error
我正在使用 python 2.7。
我有 2 个长列表:
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
我已将我的评论移至答案 post,因为 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 2.7。 我有 2 个长列表:
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
我已将我的评论移至答案 post,因为 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'}