Python 2.6字典构建器表示法

Python 2.6 dictionary builder notation

我有两个单子'a','b','c'1,2,3,我把它们压缩在一起,得到一个dict {'a':1, 'b':2, 'c':3}。我在python 2.7上成功地完成了以下操作:

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

但在python 2.6.6中,它在第3行的for处给出了语法错误。

是不是python 2.6.6不支持字典生成器表示法?

如果是这样,那么有效地实现dict {'a':1, 'b':2, 'c':3}的替代方法是什么?


您要做的是对字典的理解,这在您的Python版本中是不可用的。

您可以从(key,value)元组生成dict:

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

编辑

@peterwood的精彩评论:

使用dict(zip(fields, values))。这是越来越短,越来越快。

1
2
3
4
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,您可以获得另一个性能提升:

1
2
3
4
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