如何在Python3中编写具有自定义排序的自定义比较器,以便在sorted()函数中使用它

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

我目前在编写比较器时遇到问题。基本思想是编写一个函数,该函数接受参数(两个列表),但是我想在这些列表的列表上使用它以在sorted()函数中使用它。我该怎么办?

比较器:

def dispersion_sort(frec, srec):

    if isinstance(frec, intervals.Interval) and isinstance(srec, intervals.Interval):
        if frec[DOUBLE_RES_COL] < srec[DOUBLE_RES_COL]:
            return frec
        if frec[DOUBLE_RES_COL] > srec[DOUBLE_RES_COL]:
            return srec
        if frec[DOUBLE_RES_COL].overlaps(srec[DOUBLE_RES_COL]):
            if (frec[DOUBLE_TIME_COL] < srec[DOUBLE_TIME_COL]):
                return frec
            else:
                return srec

    return frec

我怎么称呼它:

results = sorted(results, key=dispersion_sort)

非常感谢!

python python-3.x sorting comparator
1个回答
0
投票

您可以为此使用functools.cmp_to_key

functools.cmp_to_key

它将旧样式比较器函数(带有2个参数)转换为一个新样式键函数,它带有一个参数。

© www.soinside.com 2019 - 2024. All rights reserved.