Python 列表中存储类对象时按照指定属性进行排序——用于正排表的排序

搜索引擎中,在建立了正排表后需要对正排表按照wordId进行排序,且该排序要保持稳定的特性。因此想到了在 python 的列表中存储一个类,通过指定类的某个属性来进行排序。具体代码如下:


1.首先定义类,按照需求定义:

class pageObj:
    url = ''
    docId = 0

    def __init__(self,U,Id):
        self.url = U
        self.docId= Id

2.定义类并进行排序:

lis = [pageObj('s',3),pageObj('ss',1),pageObj('cc',3),pageObj('sss',2)]

cmpfun = operator.attrgetter('docId') #按照docId进行排序
lis.sort(key = cmpfun)
for obj in lis:
	print obj.url,obj.docId

#输出如下:
ss 1
sss 2
s 3
cc 3


可以看出,该方法保留了源数据的稳定性,("s",3) 仍然在 ("cc",3) 之前


你可能感兴趣的:(搜索引擎,python知识点)