python 對字典分別按照key值、value值進行排序


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))

輸出 結果如下:

D:\software
{'key4': 3, 'key3': 4, 'key1': 5, 'key2': 6}
key4:3
key3:4
Process finished with exit code 0

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM