【问题标题】:Convert list of keys and list of values to a dictionary将键列表和值列表转换为字典
【发布时间】:2012-11-05 04:03:43
【问题描述】:

我有这些清单:

list1 = ["a","b","c"]
list2 = ["1","2","3"]

我需要将它们添加到字典中,其中 list1 是键,list2 是值。

我写了这段代码:

d = {}
for i in list1:
    for j in list2:
        d[i] = j
print d

输出是这样的:

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

这段代码有什么问题?我怎样才能写出这样的输出是

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

谢谢!

【问题讨论】:

  • 问题在于j 不依赖于i - 嵌套循环实际上是一个交叉应用,其中只保留了 last 值。与for x in range(len(list1)): i = list1[x]; j = list2[x]; 比较 - 现在 建立了依赖关系。但是,请参阅答案 建立依赖关系的好方法。
  • @user1692740:你应该接受对你有帮助的答案,这将帮助你在未来获得更多答案......

标签: python dictionary


【解决方案1】:

压缩列表并使用字典理解:

{i: j for i, j in zip(a, b)}

或者,更简单,只需使用dict()

dict(zip(a, b))

你应该保持简单,所以最后一个解决方案是最好的,但我保留了 dict理解示例来展示它是如何完成的。

【讨论】:

  • 请注意,dict 理解仅适用于 2.7 及更高版本。
【解决方案2】:

你快到了,除了你需要同时遍历列表

In [1]: list1 = ["a","b","c"]

In [2]: list2 = ["1","2","3"]

In [3]: d = {}

In [4]: for i, j in zip(list1, list2):
   ...:     d[i] = j
   ...:

In [5]: print d
{'a': '1', 'c': '3', 'b': '2'}

【讨论】:

  • 谢谢!这正是我所需要的。只是,我不是非常精通 Python。 “zip”有什么作用?
  • zip(list1, list2) 会给你一个像[('a', '1'), ('b', '2'), ('c', '3')]这样的元组列表,更多细节你可以看看docs.python.org/2/library/functions.html#zip
【解决方案3】:

您还可以使用dict comprehension 在一个漂亮的单行中执行以下操作。

d = {i : j for i, j in zip(list1, list2)}

【讨论】:

    【解决方案4】:
    list1 = ["a","b","c"]                                                  
    list2 = ["1","2","3"]                                                                                                                        
    mydict = {}                                                            
    for i,j in zip(list1,list2):                                           
       mydict[i] = j                                                      
    print mydict   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2017-04-23
      相关资源
      最近更新 更多