【发布时间】:2017-09-09 22:12:26
【问题描述】:
我已经为此搜索了很多时间。我对使用关键参数进行排序有了一些想法。
我有一个这样的元组列表。通过 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的小于、等于和大于的定义是什么?具体来说,哪个更小,(1, 2, 3) 或 (2, 1, 3),或者它们被认为是相等的排序?还是应该将 x 和 y 转换为极坐标并使用长度进行排序?
-
correctC是 lambda 参数的错误名称,因为您对列表及其元素重复使用相同的变量名称。 -
您应该将预期的输出添加到您的问题中。
-
这能回答你的问题吗? Sort a list by multiple attributes?
标签: python python-2.7 list sorting