Python. 将2个列表转换为一个字典对象

3

可能是重复问题:
在Python中将两个列表映射到字典中

我有两个列表如下: ['one', 'two', 'three'] 和 [1, 2, 3]

我想把它转换成这样的字典: {'one':1, 'two':2, 'three':3}

问题在于,我必须使用推导式。 谢谢。


3
为什么要使用理解能力? - Ben Burns
这并不是一个完全的重复,因为“关键是我必须使用推导式”。被接受的答案使用了 dict(zip(keys, values));没有答案使用列表推导式(尽管有一个答案使用了生成器表达式,只需更改两个字符即可将其转换为推导式)。这可能是一个愚蠢的要求,但它是一个要求,所以它不是一个重复。 - abarnert
4个回答

22
keys=['one', 'two', 'three'] 
values= [1, 2, 3]
dictionary = dict(zip(keys, values)) 

>>> print dictionary
{'one': 1, 'two': 2, 'three': 3}

看看内置函数,它们通常很方便。你可以使用Python 2.7及以上版本的字典推导式,但它们不应该是做这件事的方式:

{k: v for k, v in zip(keys, values)}

5
keys = ['one', 'two', 'three']
values = [1, 2, 3]
dict(zip(keys, values))

我可以使用最符合Python风格的方式。

如果你真的必须要,你可以使用字典推导式

{k: v for k,v in zip(keys, values)}

1
公平地说,OP没有说“列表推导式”,所以d={k:v for k,v in zip(a, b)}也许可以符合要求。(当然,我也会用dict(zip(keys, values))来做。) - DSM
@DSM 很好的观点,已添加到答案中。 - phihag

1
dict(zip(list1, list2))

这可能是最好的方法。不要使用推导式,那是一个愚蠢的要求。


0

好吧,如果你一定要:

keys = ['one', 'two', 'three']
values = [1,2,3]
d = {a:b for a,b in zip(keys,values)}

但是说真的,只需使用dict(zip(keys, values))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接