我想定义比较器,例如:
def cmp_smth(x, y):
if x == y:
return 0
elif fn(x, y):
return -1
else:
return 1
comparator = functools.cmp_to_key(cmp_smth)
它可以与cmp_to_key
转换器一起正常工作,即:
sorted([x, y, z], key=comparator)
但是,如果我想对更复杂的东西(即元组)进行排序怎么办?
sorted([(1, x), (2, y), (3, z)], key=???)
在这种情况下如何使用我的全局比较器?
答案 0 :(得分:4)
您可以使用lambda将键函数(以前是比较器)映射到每个元组的第二个元素:
sorted([(1, x), (2, y), (3, z)], key=lambda x: comparator(x[1]))