如何通过两个参数在python中对列表进行排序

时间:2019-01-16 20:09:36

标签: python list sorting coordinates

我正在做一个有关手写识别的项目,所以我要有图片才能识别其中的文字,所以我所做的就是我将图片中的所有字符都变成了对象(轮廓),问题是打印后其打印的字符未排序(或按x或y),而我需要的是从左上角到右下角对列表中的完整对象进行排序。

我试图按y坐标排序,然后按x坐标从头开始按x坐标排序。

a.sort(key = operator.attrgetter("intRectx"))     
a.sort(key = operator.attrgetter("intRectY"))

我希望该项目将按照编写的字符进行打印。

class Data():
 num1 = None           
 num2 = None        
 intRectX = 0                # x
 intRectY = 0                # y
 num3 = 0            
 num4 = 0        
 num5 = 0.0             

a = []                                                       # we will fill these shortly
for Data in all:                                    # for all contours
    if Data.checkIfContourIsValid():              # check if valid
        a.append(Data)                            # if so, append to valid contour list
a.sort(key = lambda x: (x.intRectY, x.intRectx))

1 个答案:

答案 0 :(得分:2)

使用lambda表达式排序并返回tuple

a.sort(key = lambda x: (x.intRectx, x.intRectY))

编辑:

如果要按y排序,则x交换顺序:

a.sort(key = lambda x: (x.intRectY, x.intRectx))