有如下数据:
垃圾袋 1497043 5.063276505358443
抽纸 1064344 5.28969789617728
水杯 1181517 5.5993742803056765
水杯 1194451 9.164971781320457
水杯 84793 4.089972381569897
水杯 87067 8.169655974237727
水杯 91113 4.429693750565629
洗衣液 1093302 3.933062121824615
洗衣液 1238895 14.563715528347236
洗衣液 124686 13.047655101242531
希望合并相同query下的数据,相同query按照第三列的分数排序;
代码如下:
def sorted_query_goodid():
filename = "query_goodid_score"
query_goodid_list = [x.strip().split() for x in codecs.open(filename,'r','utf-8').readlines()]
new_list = sorted(query_goodid_list,key=lambda x:(x[0],0-float(x[2])),reverse=False)
for i in new_list:
print(i)
排序的时候将第一列和第三列作为一个元祖来排序,且将第三列的数据取负这样就能够在展现的时候分数从大到小出现了,结果为:
['垃圾袋', '1497043', '5.063276505358443']
['抽纸', '1064344', '5.28969789617728']
['水杯', '1194451', '9.164971781320457']
['水杯', '87067', '8.169655974237727']
['水杯', '1181517', '5.5993742803056765']
['水杯', '91113', '4.429693750565629']
['水杯', '84793', '4.089972381569897']
['洗衣液', '1238895', '14.563715528347236']
['洗衣液', '124686', '13.047655101242531']
['洗衣液', '1093302', '3.933062121824615']