2016-01-29 110 views
3

我有2個列表'a','b','c'1,2,3和我一起壓縮得到一個字典{'a':1, 'b':2, 'c':3}。我做了關於Python 2.7成功地追蹤:Python 2.6詞典生成器符號

fields = ['a', 'b', 'c'] 
values = [1, 2, 3] 
record = {key:value for key,value in zip(fields, values)} 

但是關於Python 2.6.6,它給了我語法錯誤在for在第3行

難道字典建設者符號不支持在Python 2.6.6中?

如果是這樣,那麼有效地實現字典{'a':1, 'b':2, 'c':3}的替代方法是什麼?

+1

這是已經在Python 2.7 – Kasramvd

回答

5

你正在做的是一個字典理解它不是在您的python版本中可用。

您可以從(鍵,值)元組生成您的字典:

>>> dict((key,value) for key,value in zip(fields,values)) 
{'a': 1, 'c': 3, 'b': 2} 

編輯

通過@PeterWood優秀評論:

使用dict(zip(fields, values))。這是更短,更快。

In [15]: timeit dict((key,value) for key,value in zip(range(1000),range(1000))) 
1000 loops, best of 3: 317 µs per loop 
In [16]: timeit dict(zip(range(1000), range(1000))) 
10000 loops, best of 3: 138 µs per loop 

隨着itertools.izip你得到另一個性能提升:

In [25]: timeit dict((key,value) for key,value in izip(range(1000),range(1000))) 
1000 loops, best of 3: 286 µs per loop 
In [24]: timeit dict(izip(range(1000), range(1000))) 
10000 loops, best of 3: 78.6 µs per loop 
+1

爲什麼不'字典(郵政編碼(字段,值))'添加的字典的理解? –

+1

那是因爲我沒有看到。記住如果編輯它? – timgeb

+0

哪一個更有效?我將使用它*巨大*數據 – davneet