Python中給字典排序的四種方法
我們經(jīng)常在計(jì)算機(jī)等級(jí)考試中遇到詞頻排序的問(wèn)題,我們一般先通過(guò)生成字典的方法,統(tǒng)計(jì)詞的頻次,然后給字典排序。那么如何快速地給字典按照鍵值進(jìn)行排序呢?下面介紹三種方法。第一種方法相對(duì)比較常見(jiàn),但是第二種方法你可能第一次見(jiàn),第三種方法是比較麻煩的一種,你可以參考一下。
例:有下面的列表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)]這里,通過(guò)dic.items()獲取由字典鍵名和鍵值組成的元組列表,然后通過(guò)自定義函數(shù),獲取元組的第2個(gè)元素,作為排序的依據(jù)即key, 默認(rèn)是按照升序排列,如果是降序排列可以把reverse設(shè)為T(mén)rue,即:
>>> 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]。這里通過(guò)operator獲得了dic.items()中的鍵值。注意operator是內(nèi)置的包,無(wú)需安裝。
第三種方法:列表推導(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] #換回原來(lái)的位置
>>> [('d', 1), ('c', 2), ('b', 3), ('a', 4)]用列表推導(dǎo)式,交換元組中元素的位置,排序后再交換回來(lái),這種方法有點(diǎn)兒麻煩,但是邏輯清楚,適合新手。還有哪些好的方法,歡迎大家提出來(lái),一起來(lái)交流。
第四種方法:用Counter的方法
from collections import Counter
dic={'a': 4, 'b': 3, 'c': 2, 'd': 1}
count = Counter(dic)
print(list(count.items()))總結(jié):以上四種方法就是常見(jiàn)的排序方法,供大家參考學(xué)習(xí)。
到此這篇關(guān)于Python中給字典排序的四種方法的文章就介紹到這了,更多相關(guān)Python 字典排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
TensorFlow和keras中GPU使用的設(shè)置操作
這篇文章主要介紹了TensorFlow和keras中GPU使用的設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python Matplotlib畫(huà)圖之調(diào)整字體大小的示例
本篇文章主要介紹了python Matplotlib畫(huà)圖之調(diào)整字體大小的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Django csrf 驗(yàn)證問(wèn)題的實(shí)現(xiàn)
csrf是通過(guò)偽裝來(lái)自受信任用戶的請(qǐng)求來(lái)利用受信任的網(wǎng)站。這篇文章主要介紹了Django csrf 驗(yàn)證問(wèn)題的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python實(shí)現(xiàn)MongoDB的雙活示例
本文主要介紹了python實(shí)現(xiàn)MongoDB的雙活示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
在Python中通過(guò)getattr獲取對(duì)象引用的方法
今天小編就為大家分享一篇在Python中通過(guò)getattr獲取對(duì)象引用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能
這篇文章主要介紹了基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
pandas 對(duì)日期類型數(shù)據(jù)的處理方法詳解
這篇文章主要介紹了pandas 對(duì)日期類型數(shù)據(jù)的處理方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

