dav*_*eet 3 python tuples python-2.6 python-2.7
我有两个列表'a','b','c',1,2,3我将它们压缩在一起以获得一个字典{'a':1, 'b':2, 'c':3}.我在Python 2.7上成功完成了以下操作:
fields = ['a', 'b', 'c']
values = [1, 2, 3]
record = {key:value for key,value in zip(fields, values)}
Run Code Online (Sandbox Code Playgroud)
但是在Python 2.6.6上,它for在第3行给出了语法错误.
是不是Python 2.6.6中不支持字典生成器表示法?
如果是这样,{'a':1, 'b':2, 'c':3}有效实现该词典的替代方法是什么?
你要做的是字典理解,这在你的python版本中是不可用的.
你可以从(键,值)元组生成你的dict:
>>> dict((key,value) for key,value in zip(fields,values))
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
编辑
@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
Run Code Online (Sandbox Code Playgroud)
随着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
Run Code Online (Sandbox Code Playgroud)