Python中給字典排序的四種方法
我們經(jīng)常在計算機等級考試中遇到詞頻排序的問題,我們一般先通過生成字典的方法,統(tǒng)計詞的頻次,然后給字典排序。那么如何快速地給字典按照鍵值進行排序呢?下面介紹三種方法。第一種方法相對比較常見,但是第二種方法你可能第一次見,第三種方法是比較麻煩的一種,你可以參考一下。
例:有下面的列表dic={'a': 4, 'b': 3, 'c': 2, 'd': 1},如何實現(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個元素,作為排序的依據(jù)即key, 默認是按照升序排列,如果是降序排列可以把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)
功能是返回一個可調(diào)用對象,該對象可以使用操作__getitem__()方法從自身的操作中捕獲item。如果制定了多個items,返回一個由查詢值組成的元組。例如:運行f =itemgetter(2),然后調(diào)用f(r),返回r[2]。這里通過operator獲得了dic.items()中的鍵值。注意operator是內(nèi)置的包,無需安裝。
第三種方法:列表推導式法
>>> 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)]
用列表推導式,交換元組中元素的位置,排序后再交換回來,這種方法有點兒麻煩,但是邏輯清楚,適合新手。還有哪些好的方法,歡迎大家提出來,一起來交流。
第四種方法:用Counter的方法
from collections import Counter dic={'a': 4, 'b': 3, 'c': 2, 'd': 1} count = Counter(dic) print(list(count.items()))
總結(jié):以上四種方法就是常見的排序方法,供大家參考學習。
到此這篇關(guān)于Python中給字典排序的四種方法的文章就介紹到這了,更多相關(guān)Python 字典排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Ubuntu16.04安裝Python3.7及其pip3并切換為默認版本
這篇文章主要介紹了詳解Ubuntu16.04安裝Python3.7及其pip3并切換為默認版本,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02