建立具備列表理解的字典

我喜歡Python列表理解語法。 python

它也能夠用來建立字典嗎? 例如,經過遍歷鍵和值對: 函數

mydict = {(k,v) for (k,v) in blah blah blah}  # doesn't work

#1樓

實際上,若是它已經包含某種映射,則您甚至不須要迭代可迭代對象,dict構造函數會爲您輕鬆地作到這一點: spa

>>> 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}

#2樓

從Python 2.7和3開始,您應該只使用dict comprehension語法code

{key: value for (key, value) in iterable}

在Python 2.6和更早版本中,內置的dict能夠接收鍵/值對的迭代,所以您能夠將其傳遞給列表理解或生成器表達式。 例如: 對象

dict((key, func(key)) for key in keys)

可是,若是您已經具備可迭代的鍵和/或值,則根本不須要使用任何理解-最簡單的方法是直接調用內置的dictip

# consumed from any iterable yielding pairs of keys/vals
dict(pairs)

# "zipped" from two separate iterables of keys/vals
dict(zip(list_of_keys, list_of_values))

#3樓

在Python 3和Python 2.7+中,字典理解以下所示: get

d = {k:v for k, v in iterable}

對於Python 2.6或更早版本,請參見fortran的答案generator


#4樓

Python版本<2.7,請執行如下操做: it

d = dict((i,True) for i in [1,2,3])

Python版本> = 2.7,請執行如下操做: io

d = {i: True for i in [1,2,3]}

#5樓

在Python 2.7中,它相似於:

>>> list1, list2 = ['a', 'b', 'c'], [1,2,3]
>>> dict( zip( list1, list2))
{'a': 1, 'c': 3, 'b': 2}

壓縮他們

相關文章
相關標籤/搜索