1.sorted函數
首先介紹sorted函數,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse這三個參數。
其中iterable表示可以迭代的對象,例如可以是dict.items()、dict.keys()等,key是一個函數,用來選取參與比較的元素,reverse則是用來指定排序是倒序還是順序,reverse=true則是倒序(從大到小),reverse=false則是順序(從小到大),默認是reverse=false。
2.按照key排序
要對字典按照key排序,可以直接調用sorted函數。
my_dict = {'lilee':25, 'age':24, 'phone':12} sorted(my_dict.keys()) 輸出結果為 ['age', 'lilee', 'phone']
直接使用sorted(my_dict.keys())就能按key值對字典排序,這里是按照順序對key值進行排序的,如果想按照倒序排序的話,只需要將reverse置為true即可。
sorted(my_dcit.keys(), reverse = true)
3.按照value值排序
共有三種方法可以實現將字典按照value值進行排序
(1)key使用lambda匿名函數取value進行排序
d = {'lilee':25, 'wangyan':21, 'liqun':32, 'age':19} sorted(d.items(), key=lambda item:item[1]) 輸出結果為 [('age',19),('wangyan',21),('lilee',25),('liqun',32)] 如果需要倒序則 sorted(d.items(), key=lambda item:item[1], reverse=True) 得到的結果就會是 [('liqun',32),('lilee',25),('wangyan',21),('age',19)]
(2)使用operator的itemgetter進行排序
import operator sorted(d.items(), key=operator.itemgetter(1)) 輸出結果為 [('age',19),('wangyan',21),('lilee',25),('liqun',32)]
(3)將key和value分裝成元組,再進行排序
f = zip(d.keys(), d.values()) c = sorted(f) 輸出結果為 [('age',19),('wangyan',21),('lilee',25),('liqun',32)]
4.取出排序的前n個value值和key值
可以按照如下操作:
before = { "key1": 5, "key2": 6, "key3": 4, "key4": 3, } # 排序 after = dict(sorted(before.items(), key=lambda e: e[1])) print(after)
# 取出前幾個, 也可以在sorted返回的list中取前幾個
required_cnt = 2 cnt = 0 for key, value in after.items(): cnt += 1 if cnt > required_cnt: break print("{}:{}".format(key, value))
---------------------
原文:https://blog.csdn.net/laobai1015/article/details/85114570