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

