小编典典

将 [key1,val1,key2,val2] 转换为字典?

all

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

例如,

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

我想将其转换为字典b,其中

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

实现此目的的语法上最干净的方法是什么?


阅读 60

收藏
2022-06-13

共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()方法仍然可能是 Python 3 中最 Pythonic 的方法,尽管正如 EOL
在评论中指出的那样,zip()在 Python 3 中已经是惰性的,因此您不需要izip().

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

在 Python 3.8 及更高版本中,您可以使用“海象”运算符 ( ) 在一行上编写:=

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

否则,您需要使用分号将其放在一行中。

2022-06-13