我正在尝试以特定方式订购一组坐标
如果我有一组尚未排序的坐标,代表某个网格中的不同单元格,
{(2, 2), (3, 1), (1, 2), (3, 2), (1, 3)}
我的目标是从底行开始从左到右排序。
schematic of coordinates
0 1 2 3 4
0 X X X X X
1 X X O O X
2 X X O X X
3 X O O X X
{(3, 1), (3, 2), (2, 2), (1, 2), (1, 3)} # desired output
我想出了以下代码,但是在行号相同但列号不同的情况下会失败
data = {(1, 2), (1, 4), (2, 2), (0, 3), (0, 4)}
data_1 = sorted(data, key=lambda x: x[0], reverse=True)
data_2 = sorted(data_1, key=lambda x: x[1])
>>> print(data_2)
[(2, 2), (1, 2), (0, 3), (1, 4), (0, 4)]
# desired output
[(2, 2), (1, 2), (1, 4), (0, 3), (0, 4)]
我可以做出哪些改进?
最佳答案
data = {(1, 2), (1, 4), (2, 2), (0, 3), (0, 4)}
sorted(data, key=lambda x:(-x[0],x[1]))
#[(2, 2), (1, 2), (1, 4), (0, 3), (0, 4)]
关于python - 按行排序坐标列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331870/