python zip 2长列表为字典截断错误

时间:2015-10-16 23:45:32

标签: python list dictionary zip

我正在使用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

1 个答案:

答案 0 :(得分:2)

我已将评论移至答案帖,因为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'}