use*_*19o 5 python sorting list python-2.7
我为此搜索了很多时间。我对使用关键参数进行排序有了一些想法。
我有一个像这样的元组列表。它是由 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)]
Run Code Online (Sandbox Code Playgroud)
它有 3 个值。中心坐标(x,y)和半径。
我需要使用它的 x 和 y 值对所有元组进行排序。
我可以单独进行这种排序。
xS=sorted(correctC,key=lambda correctC: correctC[0])
Run Code Online (Sandbox Code Playgroud)
这有点根据x值只。
yS=sorted(correctC,key=lambda correctC: correctC[1])
Run Code Online (Sandbox Code Playgroud)
这是仅根据 y 值排序。
如何使用一个表达式同时执行(根据 x 值和 y 值)?
我正在使用 Python 2.7
在这种特殊情况下,如果您不关心具有相同x, y值的点如何排列,只需调用sort即可完成工作。元组按字典顺序排序。
correctC.sort()
Run Code Online (Sandbox Code Playgroud)
如果您想更明确,请按照其他答案的说明进行操作:
correctC.sort(key=lambda t: (t[0], t[1]))
Run Code Online (Sandbox Code Playgroud)
据我所知,这有帮助:
sorted(correctC, key=lambda correctC:[correctC[0],correctC[1]])
Run Code Online (Sandbox Code Playgroud)
排序结果:
[(36, 44, 22), (36, 110, 24), (38, 170, 25), (38, 234, 26), (124, 44, 22), (124, 112, 27), (126, 172, 24), (126, 234, 26), (208, 44, 25), (208, 108, 24), (210, 172, 25), (210, 236, 25), (296, 44, 25), (296, 110, 23), (298, 172, 25), (298, 234, 26), (382, 108, 25), (384, 44, 22), (384, 236, 25), (386, 172, 22), (468, 44, 25), (468, 110, 23), (470, 172, 25), (470, 236, 25), (558, 44, 22), (558, 110, 22), (562, 170, 25), (562, 234, 26), (646, 44, 22), (646, 110, 25), (648, 172, 25), (648, 234, 25), (730, 44, 25), (730, 110, 22), (732, 234, 22), (734, 172, 25)]
Run Code Online (Sandbox Code Playgroud)