python字典dict排序与sorted函数
sorted(iterable[, cmp[, key[, reverse]]])
参数说明:
- iterable – 可迭代对象。
- cmp --比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
实例:
def reverse_numeric(x, y):
return y - x
sorted([5, 2, 4, 1, 3], cmp=reverse_numeric)
[5, 4, 3, 2, 1]
温馨提示:
在Python 3中,cmp参数被完全删除(作为简化和统一语言的更大努力的一部分,消除了丰富的比较和__cmp__()魔术方法之间的冲突)。
字典dict排序
a = {‘ni’:1,‘sha’:5,‘shi’:4,‘shi’:2,‘bu’:3}
字典是这个,然后要对字典按照value进行排序
方法一:operator
import operator
sorted(a.items(),key = operator.itemgetter(1))
//结果是 [('ni',1), ( 'shi',2), ('bu',3),('shi',4),( 'sha',5)]
方法二:key ,lambda
sorted(a.items(),key = lambda x:x[1])
//结果是 [('ni',1), ( 'shi',2), ('bu',3),('shi',4),( 'sha',5)]
方法三:zip
zip_dict = zip(a.values(),a.keys())
sorted(zip_dict )
//结果是 [(1, 'ni'), (2, 'shi'), (3, 'bu'),(4, 'shi'),(5, 'sha')]
方法四:cmp
def reverse_numeric(x, y):
return x[1] - y[1]
sorted(a.items(), cmp=reverse_numeric)
//结果是 [(‘ni’,1), ( ‘shi’,2), (‘bu’,3),(‘shi’,4),( ‘sha’,5)]