构建字典的“最pythonic”方法是什么?我在序列中有值,每个键都是其值的函数?我目前正在使用以下内容,但我觉得我只是错过了一种更清洁的方式。注意:values
是与任何字典无关的列表。
for value in values:
new_dict[key_from_value(value)] = value
答案 0 :(得分:18)
至少它更短:
dict((key_from_value(value), value) for value in values)
答案 1 :(得分: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中,您可以使用“dict comprehension”,它基本上是上述的简写:
{ v : v**2 for v in l }
答案 2 :(得分:5)
Py3K:
{ key_for_value(value) : value for value in values }
答案 3 :(得分:0)
此方法避免了列表推导语法:
dict(zip(map(key_from_value, values), values))
我永远不会声称自己是“Pythonic”的权威,但这种感觉就像是一种好方法。