Python dict 排序


对 dict 排序的方法,主要是把 dict 中的元素分离出来放到一个 list 中,对 list 排序,从而间接实现对 dict 的排序。
这个"元素"可以是 key、value 或者 item。

# -*- coding: utf-8 -*-

adict = {
    "a" : 2,
    "c" : 1,
    "b" : 3
}

def sortedDictValues1(self):
    items = self.items()
    items.sort()
    return [value for key, value in items]

newAdict1 = sortedDictValues1(adict)
print newAdict1

def sortedDictValues2(self):
    keys = self.keys()
    keys.sort()
    return [self[key] for key in keys]

newAdict2 = sortedDictValues2(adict)
print newAdict2

newAdict3 = [(k,adict[k]) for k in sorted(adict.keys())] 
print newAdict3

def sort_by_value(self):
    items = self.items()
    backitems = [[v[1],v[0]] for v in items]
    backitems.sort()
    return [backitems[i][1] for i in range(0,len(backitems))]

newAdict4 = sort_by_value(adict)
print newAdict4

newAdict5 = [ v for v in sorted(adict.values())] 
print newAdict5

newAdict6 = sorted(adict.items(), lambda x, y: cmp(x[1], y[1]))
print newAdict6

newAdict7 = sorted(adict.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)
print newAdict7

newAdict8 = sorted(adict.items(), key=lambda d: d[0])
print newAdict8

newAdict9 = sorted(adict.items(), key=lambda d: d[1])
print newAdict9
分享:

评论