Python中dict排序的兩種方法
dict 內部是按照哈希值排序的,所以無法得到一個按照鍵/值升序/降序 的dict。
不過可以得到一個排好序的列表。
比如 d = {"a":1 , "b":3, "c":2} 排序后得到 [('a', 1), ('c', 2), ('b', 3)]
按照值排序
d = {"a":1 , "b":3, "c":2}
"""
得到排好序的列表
>>>d.items()
>>>dict_items([('a', 1), ('b', 3), ('c', 2)])
reverse是排序規(guī)則是否反過來,默認是升序
reverse = False 升序
reverse = True 降序
>>>d_list
>>>[('a', 1), ('c', 2), ('b', 3)]
"""
def get_sorted_list(d, reverse=False):
return sorted(d.items(), key=lambda x:x[1], reverse=reverse)
d_list = get_sorted_list(d)
我們可以獲取排好序后的key和value(這完全取決于你需要哪個)
for key,val in d_list:
print(key,val)
"""
out:
a 1
c 2
b 3
"""
按照鍵排序
d = {"a":1 , "b":3, "c":2}
def sort_dict_by_keys(d, reverse=True):
# 這里如果不強制轉換會報錯,因為d.keys()的類型是:<class 'dict_keys'>,沒有sort方法
keys = list(d.keys())
keys.sort(reverse=reverse)
return [(key,d[key]) for key in keys]
d_sort = sort_dict_by_keys(d)
print(d_sort)
"""
out:
[('c', 2), ('b', 3), ('a', 1)]
"""不指定排序依據(jù)
# 創(chuàng)建一個字典
dic={'a':'甘肅酒泉','b':'廣州市','c':'四年'}
print(sorted(dic))
# 輸出
['a', 'b', 'c']指定排序依據(jù),同時返回 key-value
print(sorted(dic.items(),key=lambda s:s[0]))
print(sorted(dic.items(),key=lambda s:s[1]))
# 輸出
[('a', '甘肅酒泉'), ('b', '廣州市'), ('c', '四年')]
[('c', '四年'), ('b', '廣州市'), ('a', '甘肅酒泉')]字典本身是無序的數(shù)據(jù)容器,如果要對字典進行排序,需要用到 sorted 這個函數(shù),不指定排序依據(jù)時,默認按照 key 進行排序,并返回排序好的列表,指定排序依據(jù)時,需要用字典獲取 key 和 value 的方法將 key 和 value 傳入 sorted 函數(shù),如果指定排序依據(jù)的同時,想要他獲取鍵值對,則需要先獲取字典的 item 傳入,然后指定 key 參數(shù),用 lambda 函數(shù)來獲取 key,上述排序默認都是升序,如果降序排列,則將 reverse 參數(shù)設定為 True 即可。
到此這篇關于Python中dict排序的兩種方法的文章就介紹到這了,更多相關Python dict排序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python實現(xiàn)在tkinter中使用matplotlib繪制圖形的方法示例
這篇文章主要介紹了Python實現(xiàn)在tkinter中使用matplotlib繪制圖形的方法,結合實例形式分析了Python使用tkinter與matplotlib進行正弦曲線圖形繪制的相關操作技巧,需要的朋友可以參考下2018-01-01
python基礎教程之簡單入門說明(變量和控制語言使用方法)
這篇文章主要介紹了開始學習python的第一步需要知道的知識(變量和控制語言使用方法),需要的朋友可以參考下2014-03-03
windows下python 3.9 Numpy scipy和matlabplot的安裝教程詳解
這篇文章主要介紹了windows下python 3.9 Numpy scipy和matlabplot的安裝教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
SpringBoot實現(xiàn)登錄注冊常見問題解決方案
這篇文章主要介紹了SpringBoot實現(xiàn)登錄注冊常見問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03

