假设两个元组中都有2个元素。
t1=(2,8)
t2=(5,6)
假设我想在它们的第一个元素的基础上比较两个元组。所以,当我们做t1
所以我想在第一个元素的基础上对这两个元组进行比较。
我知道我必须覆盖元组的比较函数。但是我不知道怎么做。
所以请告诉我如何才能做到这一点?(假设我想按升序比较元素…)
我想这样做的原因是:在python3中使用heapq模块合并k个排序列表
我正在使用Python-3.8.5
您可以简单地获取元组的第一个元素并进行比较。
t1 = (1,2)
t2 = (5,4)
print(t1[0] > t2[0])
或者如果您想过滤或排序。
sorted_tuples = sorted(list_of_tuples, key= lambda x: x[0])
这是“优雅”的方式;):
In [1]: from functools import total_ordering
In [3]: @total_ordering
...: class FirstItemComparisonTuple(tuple):
...: def __eq__(self, other):
...: return self[0] == other[0]
...: def __lt__(self, other):
...: return self[0] < other[0]
...:
In [5]: a = FirstItemComparisonTuple((1, 2))
In [6]: a[0]
Out[6]: 1
In [7]: b = FirstItemComparisonTuple((2, 4))
In [8]: a < b
Out[8]: True