【问题标题】:Python 3 lists to dictionaryPython 3 列表到字典
【发布时间】:2017-08-26 17:30:50
【问题描述】:

我有三个列表,我想用它们构建一个字典:

a = [a,b,c]  
b = [1,2,3]  
c = [4,5,6]  

我希望有:

{'a':1,4, 'b':2,5, 'c':3,6}

我现在能做的就是:

{'a':1,'b':2, 'c':3}

我该怎么办?

【问题讨论】:

标签: python python-3.x list dictionary merge


【解决方案1】:

你可以试试这个:

a = ["a","b","c"] 
b = [1,2,3]  
c = [4,5,6]  

new_dict = {i:[j, k] for i, j, k in zip(a, b, c)}

输出:

{'b': [2, 5], 'c': [3, 6], 'a': [1, 4]}

如果你真的想要一个排序的结果,你可以试试这个:

from collections import OrderedDict

d = OrderedDict()

for i, j, k in zip(a, b, c):
    d[i] = [j, k]

现在,您有一个 OrderedDict 对象,其中的键按字母顺序排序。

【讨论】:

    【解决方案2】:

    检查这个:how to zip two lists into new one 我建议先压缩 b 和 c 列表,然后使用 zip 再次将它们映射到字典中:

    a = ['a','b','c']
    b = [1,2,3]
    c = [4,5,6]
    vals = zip(b,c)
    d = dict(zip(a,vals))
    print(d)
    

    【讨论】:

    • 谢谢你。这正是我所需要的。事实上,我已经尝试过压缩 2 个列表,但我得到了 。我无法打印它们。有趣的是我一起工作。
    【解决方案3】:
    a = ['a','b','c']  
    b = [1,2,3]  
    c = [4,5,6] 
    
    result = { k:v  for k,*v in zip(a,b,c)}
    

    结果

    print(result)
    

    【讨论】:

    • 您能解释一下您的代码以及为什么它可以解决问题吗? 仅代码答案通常没有那么有用。
    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多