代码在python 2.6下无效,但在2.7中很好

code is invalid under python 2.6 but fine in 2.7

本问题已经有最佳答案,请猛点这里访问。

有人能帮我把一些python 2.7语法翻译成python 2.6吗(由于Redhat的依赖性,有点停留在2.6上)

所以我有一个简单的函数来构造一棵树:

1
def tree(): return defaultdict(tree)

当然,我想以某种方式展示这棵树。在python 2.7下,我可以使用:

1
2
3
4
5
6
7
$ /usr/bin/python2.7
Python 2.7.2 (default, Oct 17 2012, 03:00:49)
[GCC 4.4.6 [TWW]] on linux2
Type"help","copyright","credits" or"license" for more information.
>>> def dicts(t): return {k: dicts(t[k]) for k in t}
...
>>>

一切都好…但在2.6下,我得到了以下错误:

1
2
3
4
5
6
7
8
9
$ /usr/bin/python
Python 2.6.6 (r266:84292, Sep  4 2013, 07:46:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type"help","copyright","credits" or"license" for more information.
>>> def dicts(t): return {k: dicts(t[k]) for k in t}
  File"<stdin>", line 1
    def dicts(t): return {k: dicts(t[k]) for k in t}
                                           ^
SyntaxError: invalid syntax

如何重写代码:

1
def dicts(t): return {k: dicts(t[k]) for k in t}

所以我可以在python2.6下使用它?


您必须用传递生成器表达式的dict()来替换dict理解。IE.

1
def dicts(t): return dict((k, dicts(t[k])) for k in t)

1
2
3
4
5
def dicts(t):
    d = {}
    for k in t:
        d[k] = dicts(t[k])
    return d