在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

上一篇: Create a dictionary with list comprehension in Python

下一篇: Best way to parse command line arguments in C#?