代码在python 2.6下无效,但在2.7中很好[重复]

Posted

技术标签:

【中文标题】代码在python 2.6下无效,但在2.7中很好[重复]【英文标题】:code is invalid under python 2.6 but fine in 2.7 [duplicate] 【发布时间】:2013-12-21 19:33:12 【问题描述】:

请有人帮我将一些 python 2.7 语法翻译成 python 2.6(由于 redhat 依赖关系,有点卡在 2.6 上)

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

def tree(): return defaultdict(tree)

当然我想以某种方式显示树。在 python 2.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 下我收到以下错误:

$ /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

如何重写代码:

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

以便我可以在 python 2.6 下使用它?

【问题讨论】:

【参考方案1】:

您必须将 dict 理解替换为 dict() 被传递一个生成器表达式。即。

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

【讨论】:

【参考方案2】:
def dicts(t):
    d = 
    for k in t:
        d[k] = dicts(t[k])
    return d

【讨论】:

以上是关于代码在python 2.6下无效,但在2.7中很好[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 2.7 导入 hashlib 而不是 2.6 时出错

重复的 typedef - 在 C 中无效但在 C++ 中有效?

将 python 2.7 timedelta.total_seconds() 转换为 python 2.6 中的等价物

AVFoundation 图像方向在预览中偏离了 90 度,但在相机胶卷中很好

LINUX 中2.6 python 2.7 版本升级 mark 备注

Python升级版本2.6到2.7