我为此找了很多时间。我对使用 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/