使用自定义订单对列表进行排序

时间:2017-02-14 18:50:39

标签: list python-3.x intervals

我想使用自定义订单对列表进行排序,我无法转换为密钥(在Python 3中不再有sort(L,cmp= ..))。

我在订购时间间隔:I_k=[a_k,b_k]。顺序是:

I_k>I_l (if a_k>a_l) OR (if a_k=a_l and b_k<=b_l)

1 个答案:

答案 0 :(得分:0)

最好的方法是创建一个小于比较函数的区间类。

class Interval(list):
    __gt__ = __ge__ = __le__ = NotImplemented
    def __init__(self, l):
        self.extend(l)
    def __lt__(self, other):
        print('help')
        a_l, b_l = self
        a_k, b_k = other
        return a_k>a_l or (a_k==a_l and b_k<=b_l)

L = [[0,1], [2,3], [0,2]]
L = sorted(map(Interval, L))

print(L) # [[0, 2], [0, 1], [2, 3]]
相关问题