使用推导式创建字典
我可以用列表推导的语法来创建一个字典吗?
比如,通过遍历键和值的配对:
d = {... for k, v in zip(keys, values)}
17 个回答
73
其实,如果你已经有了一种映射的结构,比如字典,你就不需要一个一个地去遍历这个可迭代对象了。字典的构造函数会帮你自动处理这些事情。
>>> ts = [(1, 2), (3, 4), (5, 6)]
>>> dict(ts)
{1: 2, 3: 4, 5: 6}
>>> gen = ((i, i+1) for i in range(1, 6, 2))
>>> gen
<generator object <genexpr> at 0xb7201c5c>
>>> dict(gen)
{1: 2, 3: 4, 5: 6}
296
在Python 3和Python 2.7及以上版本中,字典推导式的写法如下:
d = {k:v for k, v in iterable}
如果你使用的是Python 2.6或更早的版本,可以查看fortran的回答。
2320
使用 字典推导式(适用于Python 2.7及更高版本):
{key: value for key, value in zip(keys, values)}
另外,你也可以使用 dict
构造函数:
pairs = [('a', 1), ('b', 2)]
dict(pairs) # → {'a': 1, 'b': 2}
dict((k, v + 10) for k, v in pairs) # → {'a': 11, 'b': 12}
如果你有单独的键和值的列表,可以用 dict
构造函数配合 zip
来创建字典:
keys = ['a', 'b']
values = [1, 2]
dict(zip(keys, values)) # → {'a': 1, 'b': 2}