列表中巢狀字典,根據字典的值排序 菜鳥

2022-09-23 07:03:08 字數 3131 閱讀 5040

格式:資料型別為列表,列表元素為字典。由字典組織的列表形式。

分析:可以將列表中的字典先放入到乙個大字典中,對整個字典進行排序,在排序完成後,再轉換為列表包含字典的形式即可

現在有乙個列表,根據每個字典的值進行排序。

dict_list = [, , , , , ]

思路:可以將列表中的字典先放入到乙個大字典中,對整個字典進行排序,在排序完成後,再轉換為列表包含字典的形式即可。

from operator import itemgetter

dict_list = [, , , , , ]

mid_dict =

mid_list = sorted(mid_dict.items(), key=itemgetter(1))

fin_list = [ for x in mid_list]例子:t=[, ,]

def sorted_listdict(dict_list ):

new_list=

new_d={}

mid_dict = ###格式寫法。列表與字典的結構

#print (mid_dict)

ordered_dict = ordereddict(sorted(mid_dict.items(), key=lambda t: int(t[1]), reverse=true))

#print (type(ordered_dict),ordered_dict)

# ordereddict([('xgei-0/0/1/2', '20'), ('xgei-0/0/1/15', '12'), ('xgei-0/0/1/1', '9')])

for x in ordered_dict:

new_d[x]=mid_dict[x]

new_list.append(new_d)

print (new_list)

return new_list1.sorted函式按key值對字典排序先來基本介紹一下sorted函式,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse這三個引數。其中iterable表示可以迭代的物件,例如可以是 dict.items()、dict.keys()等,key是乙個函式,用來選取參與比較的元素,reverse則是用來指定排序是倒序還是順序,reverse=true則是倒序,reverse=false時則是順序,預設時reverse=false。要按key值對字典排序,則可以使用如下語句:

>>> dict2=,

... '1': ,

... '2': ,

... '3': ,

... '20': ,

... '4': ,

... '5': ,

... '30': ,

... '6': ,

... '7':

... }

>>> sorted(dict2.keys())

['1', '11', '2', '20', '3', '30', '4', '5', '6', '7']直接使用sorted(d.keys())就能按key值對字典排序,這裡是按照順序對key值排序的,如果想按照倒序排序的話,則只要將reverse置為true即可。2.sorted函式按value值對字典排序要對字典的value排序則需要用到key引數,在這裡主要提供一種使用lambda表示式的方法,如下:

>>> sorted(dict2.items(),key=lambda i:i[0])

[('1', ), ('11', ), ('2', ), ('20', ), ('3', ), ('30', ), ('4', ), ('5', ), ('6', ), ('7', )]

>>> sorted(dict2.items(),key=lambda i:int(i[0]))

[('1', ), ('2', ), ('3', ), ('4', ), ('5', ), ('6', ), ('7', ), ('11', ), ('20', ), ('30', )]

>>>這裡的d.items()實際上是將d轉換為可迭代物件,迭代物件的元素為 ('1', ), ('2', ), ('3', ), ('4', ), ('5', ), ('6', ), ('7', ), ('11', ), ('20', ), ('30', ),items()方法將字典的元素 轉化為了元組,而這裡key引數對應的lambda表示式的意思則是選取元組中的第二個元素作為比較引數(如果寫作key=lambda item:item[0]的話則是選取第乙個元素作為比較物件,也就是key值作為比較物件。lambda x:y中x表示輸出引數,y表示lambda 函式的返回值),所以採用這種方法可以對字典的value進行排序。注意排序後的返回值是乙個list,而原字典中的名值對被轉換為了list中的元組。

3、使用orderdict函式排序(一般適用於python3以上,該函式為3新增)

>>> dict1=,

... '1': ,

... '2': ,

... '3': ,

... '20': ,

... '4': ,

... '5': ,

... '30': ,

... '6': ,

... '7':

... }

>>> from collections import ordereddict

>>> ordered_dict = ordereddict(sorted(dict1.items(), key=lambda t: t[0]))

>>> print (ordered_dict)

ordereddict([('1', ), ('11', ), ('2', ), ('20', ), ('3', ), ('30', ), ('4', ), ('5', ), ('6', ), ('7', )])

>>> new_ordered_dict = ordereddict(sorted(dict1.items(), key=lambda t: int(t[0])))

>>> print (new_ordered_dict)

ordereddict([('1', ), ('2', ), ('3', ), ('4', ), ('5', ), ('6', ), ('7', ), ('11', ), ('20', ), ('30', )])

>>> type(ordered_dict) ##返回有序字典

巢狀字典按字典值排序

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

python 巢狀列表排序,字典排序

python 巢狀列表排序,字典排序 temp dict temp list test cxiaoxue 19 exiaolu 17 dxiaolin 20 bxiaoli 18 axiaoming 18 fxiaojuan 21 if name main 巢狀列表 多維陣列 排序 print f ...

python中巢狀列表轉為字典

python中中將列表轉為字典 資料轉換 cases case id case title url data excepted 1,用例1 www.baudi.com 001 ok 4,用例4 www.baudi.com 002 ok 2,用例2 www.baudi.com 002 ok 3,用例3...