【问题标题】:given a list of value, and a list of key, How can I make a dictionary from both list? [duplicate]给定一个值列表和一个键列表,如何从这两个列表中制作字典? [复制]
【发布时间】:2012-11-12 09:22:40
【问题描述】:

可能重复:
how to convert two lists into a dictionary (one list is the keys and the other is the values)?

如果我有一个整数列表:

L=[1,2,3,4]

我有一个元组列表:

K=[('a','b'),('c','d'),('e','f'),('g','i')]

如何制作一个字典列表,其中键是K中的项目,值是L中的整数,其中每个整数对应于K中的项目

d={('a','b'):1,('c','d'):2,('e','f'):3,('g','i'):4}

【问题讨论】:

  • 我可以使用 for 循环吗?我还没学过zip
  • 查看我发布的重复链接中的答案。其中之一是使用循环来完成的。 (并解释了原始海报 [OP] 在尝试循环时失败的地方)。那里发布的另一个答案使用zip,并简要解释了它的作用/工作原理。

标签: python


【解决方案1】:

使用zip() 将两个可迭代对象组合成对,然后将其传递给dict 构造函数:

d = dict(zip(K, L))

快速演示(考虑到dict不保留排序):

>>> L=[1,2,3,4]
>>> K=[('a','b'),('c','d'),('e','f'),('g','i')]
>>> dict(zip(K, L))
{('e', 'f'): 3, ('a', 'b'): 1, ('c', 'd'): 2, ('g', 'i'): 4}

有一个 for 循环,没有 zip():

d={}
for i, key in enumerate(K):
    d[key] = L[i]

【讨论】:

  • 我可以使用 for 循环吗?我还没学过zip
  • @user1805048 -- 现在是查找文档(Martijn 为您做的 :) 并阅读文档的最佳时机。 zip 特别有用。
  • @user1805048: 啧啧,功课作弊,是吗?很简单,直到你告诉我你还没有了解enumerate()。然后我们将继续讨论range(len(K)),然后还要解释一下range(),不是吗?
【解决方案2】:

你应该可以用zip做到这一点:

zipped = zip(K, L)
d = dict(zipped)

【讨论】:

    【解决方案3】:

    如果您需要使用 for 循环(这是您的作业吗?),您可以从以下开始:

    d = {}
    for i in xrange(len(K)):
    

    你应该自己弄清楚最后一行。

    循环索引是一种您可以在其他语言中使用的技术,并且有时(很少)在 python 中是必需的。一般来说,你应该使用python的高级语言特性来让你的代码更容易阅读和调试。

    【讨论】:

      猜你喜欢
      • 2012-11-12
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2022-08-08
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多