python - 使用多个键对 Python 列表进行排序

标签 python python-2.7 list sorting

我为此找了很多时间。我对使用 key 参数进行排序有了一些想法。

我有一个这样的元组列表。通过OpenCV霍夫圆检测得到。

correctC = [(298, 172, 25), (210, 172, 25), (470, 172, 25), (386, 172, 22), (648, 172, 25), (384, 44, 22), (558, 110, 22), (562, 170, 25), (382, 108, 25), (734, 172, 25), (126, 172, 24), (646, 44, 22), (296, 110, 23), (126, 234, 26), (470, 236, 25), (296, 44, 25), (208, 108, 24), (38, 170, 25), (730, 110, 22), (730, 44, 25), (468, 110, 23), (468, 44, 25), (208, 44, 25), (124, 44, 22), (558, 44, 22), (36, 110, 24), (36, 44, 22), (298, 234, 26), (210, 236, 25), (648, 234, 25), (732, 234, 22), (562, 234, 26), (384, 236, 25), (38, 234, 26), (646, 110, 25), (124, 112, 27)]

它有 3 个值。中心坐标(x,y)和半径。

我需要使用它的 x 和 y 值对所有元组进行排序。

我可以单独进行排序。

xS=sorted(correctC,key=lambda correctC: correctC[0])

这是根据 x 值排序。

yS=sorted(correctC,key=lambda correctC: correctC[1])

这是根据 y 值排序。

如何使用一个表达式同时执行这两项操作(根据 x 值和 y 值)?

我正在使用 Python 2.7

最佳答案

在这种特殊情况下,如果您不关心具有相同 x, y 值的点如何排列,只需调用 sort 即可。元组按字典顺序排序。

correctC.sort()

如果你想更明确一点,就按照另一个答案说的去做:

correctC.sort(key=lambda t: (t[0], t[1]))

关于python - 使用多个键对 Python 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398184/

相关文章:

r - 计算矩阵列表 R 的按元素分位数

c# - 如何在 C# 中将 LinkedList<T> 添加到 LinkedList<T>?

Python 正则表达式 : match a range of numbers with a separator

python - 如何重启消费者rabbitmq pika python

c# - 使用索引将成员添加到 C# List

python - 根据列中值的前缀删除 Pandas 行

python - 如何在 Odoo 中返回两个变量?

python - 将所有错误记录到 Django 站点上的控制台或文件

Python 子进程 (ffmpeg) 仅在我按 Ctrl-C 程序时启动?

python - 计算销售额的滚动(滞后和超前)差异的最佳方法是什么?