最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中給字典排序的七種方法詳解

 更新時(shí)間:2025年07月15日 09:04:16   作者:PythonFun  
我們經(jīng)常在計(jì)算機(jī)等級(jí)考試中遇到詞頻排序的問(wèn)題,我們一般先通過(guò)生成字典的方法,統(tǒng)計(jì)詞的頻次,然后給字典排序,那么如何快速地給字典按照鍵值進(jìn)行排序呢?本文給大家介紹了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è)為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(dic.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()))

第五種方法:利用pandas的方法

如果進(jìn)行數(shù)據(jù)分析,可以把字典讀取成數(shù)據(jù)框,然后采用pandas進(jìn)行排序,效果也非常不錯(cuò)。

import pandas as pd  
  
dic = {'a': 4, 'b': 3, 'c': 2, 'd': 1}  
df = pd.DataFrame.from_dict(dic, orient='index').reset_index()  
df.columns = ['key', 'value']  
df_sorted = df.sort_values(by='value').reset_index(drop=True)  
  
# 如果你想要得到一個(gè)排序后的字典  
sorted_dic = dict(zip(df_sorted['key'], df_sorted['value']))  
  
print(sorted_dic)  
# 輸出: {'d': 1, 'c': 2, 'b': 3, 'a': 4}

第六種方法:自定義函數(shù)法

可以自定義一個(gè)函數(shù),把字典和排序的方式作為參數(shù)傳入,這樣需要排序時(shí)就可以直接調(diào)用此函數(shù)來(lái)進(jìn)行,可以簡(jiǎn)化代碼,如下扭示:

def sort_dict_by_value(d, reverse=False):  
    return dict(sorted(d.items(), key=lambda x: x[1], reverse=reverse))  
  
dic = {'a': 4, 'b': 3, 'c': 2, 'd': 1}  
sorted_dic = sort_dict_by_value(dic)  
sorted_dic_desc = sort_dict_by_value(dic, reverse=True)  
  
print(sorted_dic_desc)  
# 輸出: {'a': 4, 'b': 3, 'c': 2, 'd': 1}

第七種方法:字典推導(dǎo)式法

字典推導(dǎo)式據(jù)有簡(jiǎn)單直接,運(yùn)行速度快等特點(diǎn),不需要導(dǎo)出其它的包,也不需要引用什么模塊,排序效率非常的高,值得推薦。

dic = {'a': 4, 'b': 3, 'c': 2, 'd': 1}  
  
# 使用sorted()和字典推導(dǎo)式按值排序  
sorted_dic = {k: v for k, v in sorted(dic.items(), key=lambda x: x[1])}  
  
print(sorted_dic)  
# 輸出: {'d': 1, 'c': 2, 'b': 3, 'a': 4}  
  
# 如果需要降序  
sorted_dic_desc = {k: v for k, v in sorted(dic.items(), key=lambda x: x[1], reverse=True)}  
  
print(sorted_dic_desc)  
# 輸出: {'a': 4, 'b': 3, 'c': 2, 'd': 1}

學(xué)后總結(jié)

以上七種方法殊途同歸,都可以實(shí)現(xiàn)字典的排序,但是第一種方法是Python二級(jí)中采用的慣常作法,容易理解,請(qǐng)大家牢記憶。

counter和operator的方法也很簡(jiǎn)單,可以作為備用。積累常見(jiàn)的字典排序方法,可以幫助我們鞏固基礎(chǔ)知識(shí),舉一反三,深化理解。

到此這篇關(guān)于Python中給字典排序的七種方法詳解的文章就介紹到這了,更多相關(guān)Python字典排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python清空文件并替換內(nèi)容的實(shí)例

    Python清空文件并替換內(nèi)容的實(shí)例

    今天小編就為大家分享一篇Python清空文件并替換內(nèi)容的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python 音頻和視頻合并自動(dòng)裁剪

    python 音頻和視頻合并自動(dòng)裁剪

    本文主要介紹了python 音頻和視頻合并自動(dòng)裁剪,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Python作用域與名字空間原理詳解

    Python作用域與名字空間原理詳解

    這篇文章主要介紹了python作用域與名字空間原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python使用python-docx實(shí)現(xiàn)自動(dòng)化處理Word文檔

    Python使用python-docx實(shí)現(xiàn)自動(dòng)化處理Word文檔

    這篇文章主要為大家展示了Python如何通過(guò)代碼實(shí)現(xiàn)段落樣式復(fù)制,HTML表格轉(zhuǎn)Word表格以及動(dòng)態(tài)生成可定制化模板的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05
  • Pytorch?linear?多維輸入的參數(shù)問(wèn)題

    Pytorch?linear?多維輸入的參數(shù)問(wèn)題

    這篇文章主要介紹了Pytorch?linear多維輸入的參數(shù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Python 四大核心數(shù)據(jù)結(jié)構(gòu)之列表、字典、元組、集合

    Python 四大核心數(shù)據(jù)結(jié)構(gòu)之列表、字典、元組、集合

    這段文章詳細(xì)介紹了Python中的列表、元組、字典和集合四種數(shù)據(jù)結(jié)構(gòu)的核心特點(diǎn)和適用場(chǎng)景,特別強(qiáng)調(diào)了列表的有序可修改、元組的有序不可修改、字典的鍵值對(duì)映射以及集合的自動(dòng)去重功能,感興趣的朋友跟隨小編一起看看吧
    2026-06-06
  • Python使用pdfminer.six實(shí)現(xiàn)精準(zhǔn)控制PDF文本布局

    Python使用pdfminer.six實(shí)現(xiàn)精準(zhǔn)控制PDF文本布局

    pdfminer.six是一款強(qiáng)大的Python庫(kù),專注于PDF文檔的精細(xì)解析,提供字符級(jí)定位和布局控制能力,下面小編就和大家詳細(xì)介紹一下它的具體用法吧
    2026-04-04
  • python實(shí)現(xiàn)ID3決策樹算法

    python實(shí)現(xiàn)ID3決策樹算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)ID3決策樹算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python 制作手機(jī)歸屬地查詢工具(附源碼)

    python 制作手機(jī)歸屬地查詢工具(附源碼)

    這篇文章主要介紹了python 制作手機(jī)歸屬地查詢工具,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python函數(shù)進(jìn)階之位置參數(shù)與關(guān)鍵字參數(shù)的使用教學(xué)

    Python函數(shù)進(jìn)階之位置參數(shù)與關(guān)鍵字參數(shù)的使用教學(xué)

    本文為大家深入講解了Python函數(shù)中位置參數(shù)與關(guān)鍵字參數(shù)的使用核心概念與實(shí)踐方法,文中的示例代碼講解詳細(xì),希望可以幫助大家掌握關(guān)鍵技術(shù)要點(diǎn)并了解實(shí)際應(yīng)用場(chǎng)景與最佳實(shí)踐
    2026-05-05

最新評(píng)論

泸溪县| 钦州市| 宁德市| 南昌市| 通城县| 德安县| 静乐县| 新干县| 井冈山市| 华亭县| 越西县| 青海省| 理塘县| 黔西| 资阳市| 垦利县| 红河县| 南陵县| 泰来县| 同仁县| 五寨县| 宁南县| 卢氏县| 江孜县| 碌曲县| 延安市| 滁州市| 光山县| 陆川县| 于都县| 洛隆县| 鄢陵县| 焉耆| 汾西县| 疏附县| 祁连县| 阿克苏市| 宁海县| 霍林郭勒市| 五河县| 富平县|