搜索引擎中,在建立了正排表后需要对正排表按照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) 之前