python sort dict 总结

python中的dict是不能排序的,只有对dict的representation进行排序,例如list或者tuple
排序肯定会用到sorted函数,那么我们就来讲一下sorted函数。

sorted

  • sorted(iterable,key,reverse)

iterable:表示可迭代的对象,例如dict.keys(), dict.items()
key:是一个函数,用来选择参与排序的元素
reverse:默认为False,从小到大排序,reverse=True,表示从大到小排序

按 key 排序

import operator
x = {1:2, 5:6, 3:4}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
# sorted_x = sorted(x.items(), key=operator.itemgetter(0), reverse=True)

itemgetter(0)表示取每项的第一个值,也就是键,来参与排序,默认是从小到大排序
结果 [(1, 2), (3, 4), (5, 6)]

按 value 排序

import operator
x = {1:2, 5:6, 3:4}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))

itemgetter(1)表示取每项的值来排序
结果 [(1, 2), (3, 4), (5, 6)]

按 key 排序

def sortedDictValues1(adict): 
	items = adict.items() 
	items.sort() 
	return [value for key, value in items] 
def sortedDictValues2(adict): 
	keys = adict.keys() 
	keys.sort() 
	return [dict[key] for key in keys] 
def sortedDictValues3(adict): 
	keys = adict.keys() 
	keys.sort() 
	return map(adict.get, keys) 
#一行语句搞定: 
[(k,di[k]) for k in sorted(di.keys())] 

按 value 排序

#还是一行搞定: 
[ v for v in sorted(di.values())] 
posted @ 2017-09-08 16:26  清水汪汪  阅读(5165)  评论(0编辑  收藏  举报