如何在Python 3中有效地定义自定义全局比较器?

问题描述 投票:0回答:1

我想定义比较像:

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=???)

在这种情况下如何使用我的全局比较器?

python python-3.x sorting comparison
1个回答
4
投票

您可以使用lambda将键函数(以前是比较器)映射到每个元组的第二个元素:

sorted([(1, x), (2, y), (3, z)], key=lambda x: comparator(x[1]))
© www.soinside.com 2019 - 2024. All rights reserved.