嗨:
我正在尝试以自定义方式对元组列表进行排序:
例如:
lt = [(2,4), (4,5), (5,2)]
必须排序:
lt = [(5,2), (2,4), (4,5)]
规则:
* 如果 a[1] == b[0]
,则 b 元组大于元组
* 如果 a[0] == b[1] 则 a 元组大于 b 元组
我实现了这样一个 cmp 函数:
def tcmp(a, b):
if a[1] == b[0]:
return -1
elif a[0] == b[1]:
return 1
else:
return 0
但是对列表进行排序:
lt.sort(tcmp)
让我看看:
lt = [(2, 4), (4, 5), (5, 2)]
我做错了什么?
最佳答案
在我看来,您正在尝试解决 Google 的 Python 类问题之一,即根据元组的最后一个元素按升序对元组列表进行排序。
我是这样做的:
def sort_last(tuples):
def last_value_tuple(t):
return t[-1]
return sorted(tuples, key=last_value_tuple)
编辑:我没有阅读全部内容,我认为它是基于元组的最后一个元素。好吧,我还是要把它留在这里,因为它对任何人都有用。
关于python - 使用自定义键在 python 中排序元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554115/