我喜歡Python列表理解語法。 python
它也能夠用來建立字典嗎? 例如,經過遍歷鍵和值對: 函數
mydict = {(k,v) for (k,v) in blah blah blah} # doesn't work
實際上,若是它已經包含某種映射,則您甚至不須要迭代可迭代對象,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}
從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)
可是,若是您已經具備可迭代的鍵和/或值,則根本不須要使用任何理解-最簡單的方法是直接調用內置的dict
: ip
# 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))
在Python 3和Python 2.7+中,字典理解以下所示: get
d = {k:v for k, v in iterable}
對於Python 2.6或更早版本,請參見fortran的答案 。 generator
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]}
在Python 2.7中,它相似於:
>>> list1, list2 = ['a', 'b', 'c'], [1,2,3] >>> dict( zip( list1, list2)) {'a': 1, 'c': 3, 'b': 2}
壓縮他們 !