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下使用它?
您必须用传递生成器表达式的
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 |