假设两个元组都有2个元素。
t1=(2,8)
t2=(5,6)假设我想在两个元组的第一个元素的基础上比较它们。因此,当我们执行t1>t2时,输出应该是True (作为t11>t21)。
所以我想在第一个元素的基础上对这两个元组进行比较。
我知道我必须覆盖tuple的比较函数。但我不知道该怎么做。
所以请告诉我我该如何做到这一点?(假设我想按升序比较元素...)
我想这样做的原因是:Merging k sorted lists using heapq module in python3
我正在使用Python-3.8.5
发布于 2021-05-03 16:05:56
您可以简单地获取元组的第一个元素并进行比较。
t1 = (1,2)
t2 = (5,4)
print(t1[0] > t2[0])或者,如果您想要筛选或排序。
sorted_tuples = sorted(list_of_tuples, key= lambda x: x[0])发布于 2021-05-03 16:11:54
这里是“优雅”的方式;):
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]: Truehttps://stackoverflow.com/questions/67365280
复制相似问题