在python中,字典按值排序

2021-10-05 20:13:23 字數 2417 閱讀 5465

d=    # 首先建乙個字典d

#d.items()返回的是: dict_items([('a', 1), ('c', 3), ('b', 2)])

d_order=sorted(d.items(),key=lambda x:x[1],reverse=false) # 按字典集合中,每乙個元組的第二個元素排列。

# x相當於字典集合中遍歷出來的乙個元組。

print(d_order) # 得到:  [('a', 1), ('b', 2), ('c', 3)]

下面是sorted排序方法的詳細解釋:

1. sorted高階函式語法格式:  sorted(可迭代物件,key=函式名,reverse=false/true)

作用:從可迭代物件中,依次取出乙個元素,該元素再按照key規定的排列依據排序。

可迭代物件:即可依次取值的物件,例如:集合,序列(列表,字串,元組),字典等。

key : 是列表排列的依據,一般可以自定義乙個函式返回排序的依據,再把函式名繫結給key。

reverse : 譯為反轉,reverse預設等於false,從小到大排序。等於true時,從大到小排序。

2. 匿名函式lambda的格式:    函式名 = lambda  [形參1,形參2,...] :  ,返回操作語句塊產生的結果並繫結給函式名。

例如: key=lambda x : x[1]       

x:相當於字典集合中的乙個元組, 例:dict_items([('a', 1), ('c', 3), ('b', 2)])中的('a', 1)或('c', 3)或('b', 2)

x[1]: 返回x中的第二個元素,即鍵值對元組中的值。dict_items([('a', 1), ('c', 3), ('b', 2)])中的1或2或3

注意:(1) sorted函式中的可迭代物件不要用字典d,那樣只能迭代出的字典d的鍵。要用d.items()才可迭代出字典的鍵值對。

例:不能用 d_order=sorted(d,key=lambda x:x[1],reverse=false)

要用 d_order=sorted(d.items(),key=lambda x:x[1],reverse=false)

(2) sorted函式排好序後,要繫結乙個物件(賦值),例:d_order=sorted(d.items(),key=lambda x:x[1],reverse=false).

因為字典是無序型別,用sorted函式排好序後不繫結d_order,字典會自動打亂順序。

python中的字典是無序型別,沒有自己的排序方法。但可以用列表的.sort()方法來進行排序。

我們首先要把字典轉換為列表,再進行排序。

d=    # 首先建乙個字典d

d.items() # 得到: dict_items([('a', 1), ('c', 3), ('b', 2)])

l=list(d.items()) # 得到列表: l=[('a', 1), ('c', 3), ('b', 2)]

l.sort(key=lambda x:x[1],reverse=false) # 按列表中,每乙個元組的第二個元素從小到大排序。

# x代表從l中遍歷出的乙個元組

print(l) # 得到:  [('a', 1), ('b', 2), ('c', 3)]

注意:

1.上面的例子中最要的一步就是:  l=list(d.items()),  即: l = list(dict_items([('a', 1), ('c', 3), ('b', 2)])

用list()列表建構函式,將l= dict_items([('a', 1), ('c', 3), ('b', 2)]) 轉變為列表,得到列表:  l=[('a', 1), ('c', 3), ('b', 2)] 。

ps: 今天早上我折騰了好久才發現,list()建構函式竟然可以把 d.items()產生的dict_items鍵值對集合型別,直接變成列表,簡直nb啊!

2.再簡單說一下列表的l.sort()方法:  l.sort(key=函式名,reverse=false/true)

l.sort():會自動遍歷列表中的元素,即依次取出乙個元素。再以key繫結的函式為依據排序。

例如: l.sort(key=lambda x:x[1],reverse=false)       #l=[('a', 1), ('c', 3), ('b', 2)]

從列表l中取出第乙個元素('a', 1)元組,以元組的第二個元素'1'為排序依據,

再依次從列表中依次取出第二,第三,...個元素確定排序依據,

最後reverse=false,按從小到大的順序排列。

巢狀字典按字典值排序

這裡有一組關於各省各市上市公司數量的巢狀字典資料,我想實現按各省上市公司數量排序?資料如下 lsd 甘肅 吉林 江蘇 北京 山西 湖北 河南 貴州 四川 重慶 內蒙古 浙江 福建 廣西 上海 河北 廣東 天津 湖南 遼寧 江西 陝西 黑龍江 雲南 海南 安徽 寧夏 新疆 青海 如下 匿名函式中,按照...

Python字典按值排序的方法

python字典按值排序的方法 法1 預設公升序排序,加reverse true指定為降序排序 sorted的結果是乙個list dic1sortlist sorted dic1.items key lambda x x 1 reverse true 法2 import operator sorte...

python按值排序 python 按值排序

感謝分享!python 字典 dict 的特點就是無序的,按照鍵 key 來提取相應值 value 如果我們需要字典按值排序的話,那可以用下面的方法來進行 1 下面的是按照value的值從大到小的順序來排序。dic dict sorted dic.iteritems key lambda d d 1...