Python2.7和Python 3.6.0之间的Sorted()语法差异,还是错误的?

时间:2017-06-27 07:27:00

标签: python-2.7 python-3.6

我正在重新输入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之间的语法存在差异,我不理解。

0 个答案:

没有答案