2011-05-24 68 views
1

我使用Python2.7创建了Python脚本,它工作正常。但是,当我使用Python2.6运行相同的脚本时,出现“SyntaxError:invalid syntax”错误。SyntaxError:使用Python 2.6从列表中构建字典时的语法无效

调查后,问题似乎与for循环有关。

l1 = [["a1", "a2"], ["b1", "b2"]] 
print {item[0]:item[1] for item in l1} 

当我使用Python 2.7运行上面的代码,我有以下的输出:

{'a1': 'a2', 'b1': 'b2'} 

当我与Python 2.6运行相同的代码,我有以下错误:

>>> l1 = [["a1", "a2"], ["b1", "b2"]] 
>>> print {item[0]:item[1] for item in l1} 
    File "<stdin>", line 1 
    print {item[0]:item[1] for item in l1} 
          ^
SyntaxError: invalid syntax 
>>> 

任何帮助表示赞赏。

问候,
艾伦

回答

4

试试这个:

print dict(item for item in l1) 

编辑了解您的评论:如果你想明确地选择项目,在一个元组将它们包装:

print dict((item[1], item[4]) for item in l1) 
+0

感谢Space_C0wb0y和你的代码工作。但是,在我的问题中,我简化了代码。实际上l1中的每个子列表中都有两个以上的元素。我想做一些类似“打印字典(项目[1]:项目[4]中的项目在l1)”,它仍然给我一个错误。有什么建议么? – Allen 2011-05-24 13:18:23

+0

@艾伦:我修改了我的答案。这应该工作。 – 2011-05-24 13:20:16

+0

非常感谢你Space_C0wb0y,更新后的版本非常完美!我花了半个小时来调试它,它只花了2分钟来修复它。我仍然有很多东西需要学习。 :-( – Allen 2011-05-24 13:30:38

3

词典解析在Python 2.6中不可用。有关如何在代码中解决该问题,请参阅Space_C0wb0y's answer

+0

但是他们为什么在2.7?[PEP](http://www.python.org/dev/peps/pep-0274/)被撤销了,我一直认为它是一个Python 3特性。 – 2011-05-24 13:15:50

+1

不知道为什么,但他们最终得到[从3.1.1](http://docs.python.org/whatsnew/2.7.html)。 – BoltClock 2011-05-24 13:17:21

+0

谢谢你们,由Space_C0wb0y提供的解决方案工作正常。 – Allen 2011-05-24 13:31:52

2

试试这个:

print dict([tuple(i) for i in l1]) 
+0

这似乎有点复杂的,没有必要先建立一个元组列表。 – 2011-05-24 13:32:37

相关问题