自定义Python列表排序


问题内容

我重构了我的一些旧代码,发现了这一点:

alist.sort(cmp_items)

def cmp_items(a, b):
    if a.foo > b.foo:
        return 1
    elif a.foo == b.foo:
        return 0
    else:
        return -1

该代码有效(并且我是3年前写的!),但是我找不到在Python文档中任何地方记录的东西,每个人都sorted()用来实现自定义排序。有人可以解释为什么这样做吗?


问题答案:

它记录在这里

sort()方法采用可选参数来控制比较。

cmp指定了两个参数(列表项)的自定义比较函数,该函数应返回负数,零数或正数,具体取决于第一个参数是否小于,等于或大于第二个参数:cmp =
lambda x,y :cmp(x.lower(),y.lower())。默认值为“无”。