使用多个键对Python列表排序

2024-10-04 05:33:13 发布

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

我花了很多时间才找到这个。我对使用键参数排序有了一些想法。在

我有一个这样的元组列表。它是通过OpenCV Hough圆检测得到的。在

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值对所有元组进行排序。在

我可以分开做这个分类。在

^{pr2}$

这只根据x值排序。在

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

仅根据y值排序。在

如何使用一个表达式同时(根据x值和y值)?在

我使用的是python2.7


Tags: 列表参数排序时间半径分类中心opencv
3条回答

你为什么需要提供一个密钥?默认情况下,元组按字典顺序排序(“字典顺序”)。将比较第一个元素。如果它们相同,则将比较每个元组的第二个元素,依此类推。意思是比较第一个元素,如果它们是相同的,则转到下一个元素(基本上是“字典排序”)。如果你依靠这个,你会得到你想要的,除了如果两个圆有相同的中心,那么它们也将按半径排序。在

在这种特殊情况下,如果您不关心x, y值相等的点是如何排列的,那么只需调用sort就可以完成这项工作。元组按字典顺序排序。在

correctC.sort()

如果你想说得更清楚,就按照另一个答案说的去做:

^{pr2}$

据我所见,这有助于:

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

排序结果:

^{pr2}$

相关问题 更多 >