Python 2.6 字典生成器符号
Python 2.6 dictionary builder notation
我有 2 个列表 '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)}
但是在 Python 2.6.6 上,它在第 3 行的 for
处给我语法错误。
Python 2.6.6 中是否不支持字典生成器符号?
如果是这样,有效实现字典 {'a':1, 'b':2, 'c':3}
的替代方法是什么?
您尝试做的是词典理解,您的 python.
版本不提供该功能
您可以从 (key,value) 元组生成字典:
>>> 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
我有 2 个列表 '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)}
但是在 Python 2.6.6 上,它在第 3 行的 for
处给我语法错误。
Python 2.6.6 中是否不支持字典生成器符号?
如果是这样,有效实现字典 {'a':1, 'b':2, 'c':3}
的替代方法是什么?
您尝试做的是词典理解,您的 python.
版本不提供该功能您可以从 (key,value) 元组生成字典:
>>> 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