有没有更符合Python风格的方法来构建这个字典?
如何用最“Python风格”的方式来构建一个字典呢?假设我有一串值,每个键都是根据它对应的值计算出来的。我现在用的是下面这种方法,但我觉得可能还有更简洁的方式。注意:values
是一个与任何字典无关的列表。
for value in values:
new_dict[key_from_value(value)] = value
4 个回答
5
Py3K:
{ key_for_value(value) : value for value in values }
18
至少它更短了:
dict((key_from_value(value), value) for value in values)
15
>>> l = [ 1, 2, 3, 4 ]
>>> dict( ( v, v**2 ) for v in l )
{1: 1, 2: 4, 3: 9, 4: 16}
在Python 3.0中,你可以使用“字典推导式”,这其实就是上面内容的简化写法:
{ v : v**2 for v in l }