我正在重新输入Joel Grus的代码示例' " Scratch的数据科学:Python的第一原理。"它们是用Python 2.7编写的,但我的安装是Python 3.6.0。
以下代码块(从第5页转录)每当我在Python 3.6中运行时都会生成语法错误:
# create a list (user_id, number_of_friends)
num_friends_by_id = [(user["id"], number_of_friends(user))
for user in users]
sorted(num_friends_by_id, # get it sorted
key=lambda (user_id, num_friends): num_friends, # by num_friends
reverse=True) # largest to smallest
具体做法是:
key=lambda (user_id, num_friends): num_friends, # by num_friends
^
SyntaxError: invalid syntax
从浏览StackOverflow和其他地方,我猜测问题是尝试将(user_id, num_friends)
与lambda一起使用;我见过的所有其他例子似乎只提供一个参数(如果这是正确的术语),并且它没有包含在parens中。但我无法弄清楚(a)确切的错误,以及(b)如何调整它以便在3.6中工作。
我应该注意到,我也对Python如何识别并使用num_friends
做任何事情感到困惑,因为所述变量以前从未被定义过(但是number_of_friends
有)。但是,由于这没有在本书的勘误表中列出,我假设2.7和3.6之间的语法存在差异,我不理解。