我正在尝试以特定方式订购一组坐标
如果我有一组尚待排序的坐标,它们代表某个网格中的不同单元格,
List<Integer> list = Collections.nCopies(5,0);
我的目标是从底部开始从左到右排序。
{(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
我可以做些什么改善?
答案 0 :(得分:1)
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)]
答案 1 :(得分:1)
def sorted(items):
for i in range(len(items)-1, 0 , -1):
for j in range(i):
if items[j][0] < items[j+1][0]:
items[j], items[j+1] = items[j+1], items[j]
continue
if items[j][0] == items[j+1][0] and items[j][1] > items[j+1][1]:
items[j], items[j+1] = items[j+1], items[j]
return items
data = [(1, 2), (1, 4), (2, 2), (0, 3), (0, 4)]
print(sorted(data))