Python中给字典排序的七种方法详解

 更新时间:2025年07月15日 09:04:16   作者:PythonFun  
我们经常在计算机等级考试中遇到词频排序的问题,我们一般先通过生成字典的方法,统计词的频次,然后给字典排序,那么如何快速地给字典按照键值进行排序呢?本文给大家介绍了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(dic.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()))

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

如果进行数据分析,可以把字典读取成数据框,然后采用pandas进行排序,效果也非常不错。

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)  
  
# 如果你想要得到一个排序后的字典  
sorted_dic = dict(zip(df_sorted['key'], df_sorted['value']))  
  
print(sorted_dic)  
# 输出: {'d': 1, 'c': 2, 'b': 3, 'a': 4}

第六种方法:自定义函数法

可以自定义一个函数,把字典和排序的方式作为参数传入,这样需要排序时就可以直接调用此函数来进行,可以简化代码,如下扭示:

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}

第七种方法:字典推导式法

字典推导式据有简单直接,运行速度快等特点,不需要导出其它的包,也不需要引用什么模块,排序效率非常的高,值得推荐。

dic = {'a': 4, 'b': 3, 'c': 2, 'd': 1}  
  
# 使用sorted()和字典推导式按值排序  
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}

学后总结

以上七种方法殊途同归,都可以实现字典的排序,但是第一种方法是Python二级中采用的惯常作法,容易理解,请大家牢记忆。

counter和operator的方法也很简单,可以作为备用。积累常见的字典排序方法,可以帮助我们巩固基础知识,举一反三,深化理解。

到此这篇关于Python中给字典排序的七种方法详解的文章就介绍到这了,更多相关Python字典排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python执行shell并获取结果的详细示例

    python执行shell并获取结果的详细示例

    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块,这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码,下面是一个详细的示例,展示了如何使用subprocess.run()函数来执行Shell命令并获取其输出,需要的朋友可以参考下
    2024-07-07
  • python中mpi4py的所有基础使用案例详解

    python中mpi4py的所有基础使用案例详解

    这篇文章主要介绍了python中mpi4py的所有基础使用,本文通过10个案例给大家详细讲解,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Python 仅获取响应头, 不获取实体的实例

    Python 仅获取响应头, 不获取实体的实例

    今天小编就为大家分享一篇Python 仅获取响应头, 不获取实体的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • pandas滑动窗口学习笔记(shift, diff, pct_change)

    pandas滑动窗口学习笔记(shift, diff, pct_change)

    pandas中有3类窗口,分别是滑动窗口rolling 、扩张窗口expanding以及指数加权窗口ewm,下面就来详细的介绍一下这三种的用法,感兴趣的可以了解一下
    2024-03-03
  • Python利用fitz库提取pdf中的图片

    Python利用fitz库提取pdf中的图片

    Fitz库是一个Python图像处理库,主要用于打开、编辑和保存PDF、TIFF和JPEG格式的图像,它可以帮助用户读取和写入PDF文件,提取PDF页面以及在页面上进行标记和注释,本文主要介绍了如何通过Python的fitz库提取pdf中的图片,需要的朋友可以参考下
    2023-05-05
  • pygame实现井字棋之第二步逻辑实现

    pygame实现井字棋之第二步逻辑实现

    这篇文章主要介绍了pygame实现井字棋之第二步逻辑实现,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • pycharm安装教程(下载安装以及设置中文界面)

    pycharm安装教程(下载安装以及设置中文界面)

    这篇文章主要给大家介绍了关于pycharm安装教程,文中包括下载安装以及设置中文界面,PyCharm是一款Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,需要的朋友可以参考下
    2023-10-10
  • Python实现将字典内容保存到Excel文件的四种方法

    Python实现将字典内容保存到Excel文件的四种方法

    Python 中的字典是一个数据集合,其中每个值对应一个键,它们是无序的、可变的,并且对字典中存储的值和键的数据类型没有限制,本文给大家介绍了Python实现将字典内容保存到Excel文件的四种方法,需要的朋友可以参考下
    2024-07-07
  • python3实现多线程聊天室

    python3实现多线程聊天室

    这篇文章主要为大家详细介绍了python3实现多线程聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • python利用re,bs4,requests模块获取股票数据

    python利用re,bs4,requests模块获取股票数据

    这篇文章主要介绍了python利用re,bs4,requests模块获取股票数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论