12

在回答另一个问题时,我最终创建了一个 sortkey 函数,该函数修改了字典以保存状态,然后该状态将用于排序中的后续项目。

虽然我的回答似乎有效,但我的问题是:在 python 文档中实际上是否定义了每个对象只能调用一次排序键?这是 Cpython 的实现细节吗?还是排序键实际上不止一次被调用,而我得到正确答案只是出于运气?

国家的文件sorted

key 指定一个参数的函数,用于从每个列表元素中提取比较键:key=str.lower。默认值为None(直接比较元素)

我不认为这意味着key每个元素只会调用一次......但它可以在其他地方说明。

显然我问,因为这会对任何有副作用的排序键产生影响。

4

1 回答 1

14

从您链接的文档部分:

通常,密钥和反向转换过程比指定等效 cmp 函数要快得多。这是因为 cmp 为每个列表元素调用多次,而key 和 reverse 只触摸每个元素一次

这似乎是一个“是”......

于 2012-11-15T04:30:47.987 回答