dict排序:用d.items()转成list
sorted(d.items, key=lambda d:d[1], reverse=False)
def sort_by_value(d):
items=d.items()
backitems=[[v[1],v[0]] for v in items]
backitems.sort()
return [ backitems[i][1] for i in range(0,len(backitems))] 或者return backitems
降序:list.sort(reverse = True)
逆序
list.reverse(),并不是降序排序的意思
例子
对dict排序,并且输出到文件:
def writedt(out,d):#sort a dict and write it into a file
items =d.items()
dl =[[v[1],v[0]] for v in items]
dl.sort(reverse =True)
for k in dl:
out.write(k[1] +'\t' +str(k[0]) +'\n')
return 1
整体代码如下:
import sys
def sortdt(d): #sort a dict to list
items =d.items()
backitems =[[v[1],v[0]] for v in items]
backitems.sort(reverse =True)
return backitems
def writedt(out,d):#sort a dict and write it into a file
items =d.items()
dl =[[v[1],v[0]] for v in items]
dl.sort(reverse =True)
for k in dl:
out.write(k[1] +'\t' +str(k[0]) +'\n')
return 1
def fun(infile, outfile):
infil =open(infile, 'r')
outfil =open(outfile,'w')
modt ={}
for line in infil:
tmp =line.strip().split('\t')
if len(tmp) !=6:
continue
model =tmp[0].lower().replace(" ","")
num =int(tmp[4])
modt[model] =modt.get(model, 0) +num
writedt(outfil, modt)
if __name__=='__main__':
fun(sys.argv[1], sys.argv[2])