在Python中将列表转换为字典
假设我在Python中有一个列表b,其条目方便地映射到字典。 每个偶数元素代表字典的键,以下奇数元素是值
例如,
a = ['hello','world','1','2']
我想把它转换成字典b,其中
b['hello'] = 'world'
b['1'] = '2'
什么是语法上最干净的方法来实现这一目标?
Mike asked 2019-05-15T22:56:58Z
13个解决方案
223 votes
b = dict(zip(a[::2], a[1::2]))
如果iter()/izip()很大,您可能会想要执行以下操作,而不会像上面那样创建任何临时列表。
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
在Python 3中你也可以使用dict理解,但具有讽刺意味的是,我认为最简单的方法是使用iter()/izip()和zip(),这通常是代码气味。
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
所以iter()/izip()方法仍然可能是Python 3中最Pythonic的方法,尽管EOL在评论中指出,zip()已经在Python 3中很懒,所以你不需要izip()。
i = iter(a)
b = dict(zip(i, i))
如果你想要它在一行,你将不得不作弊并使