如何在python中按两个参数对列表排序

2024-04-18 19:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个关于手写识别的项目,所以我有图片,我必须识别其中的文本,所以我所做的是,我把图片中的所有字符都做成一个对象(轮廓),问题是在打印完字符后,它的打印未排序(或按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))

Tags: 项目对象keynonefordataif排序
1条回答
网友
1楼 · 发布于 2024-04-18 19:33:00

使用返回tuplelambda表达式排序:

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

编辑:

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

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

相关问题 更多 >