自定义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())。默认值为“无”。