一尘不染

在Python中将列表转换为字典

python

假设我a在Python中有一个列表,其条目方便地映射到字典。每个偶数元素代表字典的键,后面的奇数元素是值

例如,

a = ['hello','world','1','2']

我想将其转换为字典b,

b['hello'] = 'world'
b['1'] = '2'

语法上最干净的方法是什么?


阅读 454

收藏
2020-02-15

共1个答案

一尘不染

b = dict(zip(a[::2], a[1::2]))

如果a很大,则可能需要执行以下操作,而不会像上面那样创建任何临时列表。

from itertools import izip
i = iter(a)
b = dict(izip(i, i))

在Python 3中,您也可以使用dict理解,但具有讽刺意味的是,我认为最简单的方法是使用range()and len(),通常是代码味道。

b = {a[i]: a[i+1] for i in range(0, len(a), 2)}

因此iter()/izip(),尽管EOL在注释中指出,该方法仍可能是Python 3中使用最多的Python语言,但在Python 3 zip()中已经很懒了,因此您不需要izip()

i = iter(a)
b = dict(zip(i, i))

如果只想一行,就必须作弊并使用分号。

2020-02-15