我想定义比较像:
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=???)
在这种情况下如何使用我的全局比较器?
您可以使用lambda将键函数(以前是比较器)映射到每个元组的第二个元素:
sorted([(1, x), (2, y), (3, z)], key=lambda x: comparator(x[1]))