我喜欢Python list comprehension语法。
它也可以用来创建字典吗?例如,通过迭代键和值对:
mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work
在Python 2.6和更早版本中,字典构造函数可以接收一个键/值对的迭代:
d = dict((key, value) for (key, value) in iterable)
从Python 2.7和3开始,你可以使用[ dict理解语法
a>直接:
d = {key: value for (key, value) in iterable}
当然,只要每个元素都是一个可迭代的本身,你可以以任何你想要的方式使用迭代器(元组和列表文字,生成器解析,列表解析,生成器函数,功能组合…)元素:
d = {value: foo(value) for value in sequence if bar(value)}
def key_value_gen(k):
yield chr(k+65)
yield chr((k+13)%26+65)
d = dict(map(key_value_gen, range(26)))
在Python 3 / Python 2.7+中,dict comprehensions如下所示:
d = {k:v for k, v in iterable}
对于Python 2.6及更早版本,请参阅fortran的答案。
未经作者同意,本文严禁转载,违者必究!