在Python中创建一个包含列表理解的词典
我喜欢Python列表理解语法。
它也可以用来创建词典吗? 例如,通过迭代键和值对:
mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work
在Python 2.6及更早版本中,dict构造函数可以接收可迭代的键/值对:
d = dict((key, value) for (key, value) in iterable)
从Python 2.7和3开始,您可以直接使用dict comprehension语法:
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解析工作如下所示:
d = {k:v for k, v in iterable}
对于Python 2.6及更早版本,请参阅fortran的答案。
事实上,如果它已经理解了某种映射,那么你甚至不需要迭代iterable,这个dict构造器会为你优雅地做它:
>>> 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}
链接地址: http://www.djcxy.com/p/5151.html