Python中給字典排序的四種方法
我們經(jīng)常在計(jì)算機(jī)等級(jí)考試中遇到詞頻排序的問題,我們一般先通過生成字典的方法,統(tǒng)計(jì)詞的頻次,然后給字典排序。那么如何快速地給字典按照鍵值進(jìn)行排序呢?下面介紹三種方法。第一種方法相對(duì)比較常見,但是第二種方法你可能第一次見,第三種方法是比較麻煩的一種,你可以參考一下。
例:有下面的列表dic={'a': 4, 'b': 3, 'c': 2, 'd': 1},如何實(shí)現(xiàn)字典的升序排列呢?
第一種:利用自定義函數(shù)lambda
>>> dic={'a': 4, 'b': 3, 'c': 2, 'd': 1} >>> sorted(dic.items(), key=lambda x: x[1]) [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
這里,通過dic.items()獲取由字典鍵名和鍵值組成的元組列表,然后通過自定義函數(shù),獲取元組的第2個(gè)元素,作為排序的依據(jù)即key, 默認(rèn)是按照升序排列,如果是降序排列可以把reverse設(shè)為True,即:
>>> dic={'a': 4, 'b': 3, 'c': 2, 'd': 1} >>> sorted(dic.items(), key=lambda x: x[1],reverse=True) {'a': 4, 'b': 3, 'c': 2, 'd': 1}
第二種:利用operator的方法
>>> import operator >>> sorted(xs.items(), key=operator.itemgetter(1)) [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
operator. itemgetter(item)
operator. itemgetter(*items)
功能是返回一個(gè)可調(diào)用對(duì)象,該對(duì)象可以使用操作__getitem__()方法從自身的操作中捕獲item。如果制定了多個(gè)items,返回一個(gè)由查詢值組成的元組。例如:運(yùn)行f =itemgetter(2),然后調(diào)用f(r),返回r[2]。這里通過operator獲得了dic.items()中的鍵值。注意operator是內(nèi)置的包,無需安裝。
第三種方法:列表推導(dǎo)式法
>>> dic={'a': 4, 'b': 3, 'c': 2, 'd': 1} >>> tup=[(x[1],x[0]) for x in dic.items()]#元素互換位置 >>> sorted(tup) #排序 [(1, 'd'), (2, 'c'), (3, 'b'), (4, 'a')] >>> [(x[1],x[0]) for x in dic.items()] >>> [(x[1],x[0]) for x in tup] #換回原來的位置 >>> [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
用列表推導(dǎo)式,交換元組中元素的位置,排序后再交換回來,這種方法有點(diǎn)兒麻煩,但是邏輯清楚,適合新手。還有哪些好的方法,歡迎大家提出來,一起來交流。
第四種方法:用Counter的方法
from collections import Counter dic={'a': 4, 'b': 3, 'c': 2, 'd': 1} count = Counter(dic) print(list(count.items()))
總結(jié):以上四種方法就是常見的排序方法,供大家參考學(xué)習(xí)。
到此這篇關(guān)于Python中給字典排序的四種方法的文章就介紹到這了,更多相關(guān)Python 字典排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)無痛修改第三方庫源碼的方法詳解
很多時(shí)候,我們下載的 第三方庫 是不會(huì)有需求不滿足的情況,但也有極少的情況,第三方庫 沒有兼顧到需求,本文將介紹幾個(gè)修改源碼的操作,大家可以根據(jù)需求進(jìn)行選擇2025-03-03pyqt5 使用label控件實(shí)時(shí)顯示時(shí)間的實(shí)例
今天小編就為大家分享一篇pyqt5 使用label控件實(shí)時(shí)顯示時(shí)間的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06用Python爬蟲破解滑動(dòng)驗(yàn)證碼的案例解析
今天分享個(gè)如何簡單處理滑動(dòng)圖片的驗(yàn)證碼的案例,主要是使用Python爬蟲破解滑動(dòng)驗(yàn)證碼的相關(guān)實(shí)現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧2021-05-05TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式
這篇文章主要介紹了TensorFlow 2.0之后動(dòng)態(tài)分配顯存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12詳解Ubuntu16.04安裝Python3.7及其pip3并切換為默認(rèn)版本
這篇文章主要介紹了詳解Ubuntu16.04安裝Python3.7及其pip3并切換為默認(rèn)版本,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02