安装并实现Django Chartit后,我收到一条错误消息:
Exception Type: SyntaxError at /currencypairs/
Exception Value: invalid syntax (chartdata.py, line 109)
当我检查chartdata.py中的第109行时,它会显示带有错误消息tuple paramater unpacking not supported in Python3
的红色波浪线。
sort_grp_fn = lambda (tk, td): tuple(chain(str(td['source'].query),
[td[t] for t in addl_grp_terms]))
同样的错误在第117行。
sort_by_fn = lambda (tk, td): -1*(abs(td[sort_by_term]))
由于我还没有Lambda表达式的经验,我不知道如何解决这个特定问题。
答案 0 :(得分:2)
两个lambda都接受元组作为唯一参数,将该元组解压缩到变量tk
和td
中。 Python 3中删除了此功能,因为它与新的Python 3功能注释的语法发生冲突。
你可以通过给lambdas一个参数,并使用subscription来访问元组的两个元素来解决这个问题:
sort_grp_fn = lambda tk_td: tuple(chain(str(tk_td[1]['source'].query),
[tk_td[1][t] for t in addl_grp_terms]))
和
sort_by_fn = lambda tk_td: -1*(abs(tk_td[1][sort_by_term]))
我将(tk, td)
替换为tk_td
以及td
对tk_td[1]
的任何引用(两个lambdas都忽略了tk
值。)
请注意,包裹可能存在其他问题;移植到Python 3并不总是那么容易。