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

标签 python list dictionary zip

我使用的是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/

相关文章:

python - 强制带有小时和分钟的日期时间为 null pandas

python - 如何通过 Django Rest Framework 公开 Django-Constance 设置?

list - Kotlin聚合函数

java - 通用列表的深拷贝

c# - 如何在查询 C# 中使用 Linq 和 Dictionary 从 List<> 获取元素?

python:如果键不在字典中,则添加键。防止多线程竞争条件

python - 何时使用 sys.path.append 以及何时修改 %PYTHONPATH% 就足够了

python - 如何在 Python 中 reshape 此 DataFrame?

python - 为什么我不能插入 Python 列表?

python - kwargs 覆盖 dict 子类