python - 使用自定义键在 python 中排序元组

标签 python sorting tuples

嗨: 我正在尝试以自定义方式对元组列表进行排序:
例如:

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/

相关文章:

c++ - 排序元素,但保持某些元素固定

python - 如何从包含字母数字字符的单个列表创建元组?

python - 从列表中的元组中删除元素

python - 如何从直方图均衡图像中去除噪声?

python - 使用ElementTree进行XML提取解析

c++ - 使用 Qt/C++ 的排序算法 - 对结构的 QList 进行排序

c++ - 如何按两个值而不是仅第二个值对成对 vector 进行排序?

python - 使用 Scapy 和 Python 的网桥

Python条件连接不以标点符号结尾的*连续*字符串

r - 在一行中为 LHS 分配多个新变量