关于python:给定一个值列表和一个键列表,如何从这两个列表中创建一个字典?

given a list of value, and a list of key, How can I make a dictionary from both list?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
how to convert two lists into a dictionary (one list is the keys and the other is the values)?

如果我有一个整数列表:

1
L=[1,2,3,4]

我有一个元组列表:

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

我怎样才能列出一个dict,其中key是k中的item,value是l中的integer,其中每个integer都对应于k中的item

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


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

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

快速演示(考虑到dict不保留订购):

1
2
3
4
>>> 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()

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


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

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

你应该自己找出最后一行。

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


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

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