2016-01-29 92 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