在 Python 中将 [key1,val1,key2,val2] 列表转换为字典
在 Python 中,经常会遇到其中每个列表元素对映射到字典中的键值对。要将此类列表转换为字典,语法上最优雅的方法是结合使用内置的 zip() 函数和字典构造。
例如,给定一个具有交替键和值的列表 a:
a = ['hello','world','1','2']
我们可以有效地创建一个字典 b,其中 a 中的每个键映射到其对应的值,如下所示如下:
b = dict(zip(a[::2], a[1::2]))
这里,a[::2] 提取偶数元素,表示键,a[1::2] 提取奇数元素,表示值。然后 dict() 构造函数将这些列表组合成字典。
对于较大的列表,节省内存的替代方案是利用 itertools.izip() 函数,该函数成对迭代地使用 a 中的元素:
from itertools import izip i = iter(a) b = dict(izip(i, i))
在 Python 3 中,使用 dict 理解和range():
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
或者,可以直接使用 zip() 函数,因为它在 Python 3 中是惰性的:
i = iter(a) b = dict(zip(i, i))
为了简洁起见,“海象” Python 3.8 及更高版本中可以使用运算符 (:=) 在单行中执行赋值操作:
b = dict(zip(i := iter(a), i))
以上是如何有效地将交替键和值的 Python 列表转换为字典?的详细内容。更多信息请关注PHP中文网其他相关文章!