Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于行的坐标排序列表_Python - Fatal编程技术网

Python 基于行的坐标排序列表

Python 基于行的坐标排序列表,python,Python,我正试图以一种特定的方式排列一组坐标 如果我有一组尚未排序的坐标,表示某个网格中的不同单元格 {(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 out

我正试图以一种特定的方式排列一组坐标

如果我有一组尚未排序的坐标,表示某个网格中的不同单元格

{(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)]
def排序(项目):
对于范围内的i(长度(项目)-1,0,-1):
对于范围(i)中的j:
如果项目[j][0]<项目[j+1][0]:
项目[j],项目[j+1]=项目[j+1],项目[j]
持续
如果项目[j][0]==项目[j+1][0]和项目[j][1]>项目[j+1][1]:
项目[j],项目[j+1]=项目[j+1],项目[j]
退货项目
数据=[(1,2)、(1,4)、(2,2)、(0,3)、(0,4)]
打印(已排序(数据))