如何改变Python中元组的可比较方法?

2024-09-26 22:08:56 发布

您现在位置:Python中文网/ 问答频道 /正文

假设两个元组中都有2个元素

t1=(2,8)

t2=(5,6)

假设我想在两个元组的第一个元素的基础上比较这两个元组。 因此,当我们执行t1>t2时,输出应该为True(如t1[1]>;t2[1])

所以我想在第一个元素的基础上对这两个元组进行比较

我知道我必须重写tuple的compare函数。但我不知道怎么做

那么请告诉我怎么做? (假设我想按升序比较元素…)

我想这样做的原因是: Merging k sorted lists using heapq module in python3

我正在使用Python-3.8.5


Tags: 函数gttrue元素原因基础listscompare
2条回答

您只需获取元组的第一个元素并进行比较

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

相关问题 更多 >

    热门问题