Python中dict排序的两种方法

 更新时间:2024年01月10日 09:34:57   作者:灯笼只能来教室体验生活  
字典本身是无序的,所以它每次输出都是不一样的,顺序都是乱的,那么字典如何排序,本文主要介绍了Python中dict排序的两种方法,感兴趣的可以了解一下

dict 内部是按照哈希值排序的,所以无法得到一个按照键/值升序/降序 的dict。
不过可以得到一个排好序的列表。
比如 d = {"a":1 , "b":3, "c":2} 排序后得到 [('a', 1), ('c', 2), ('b', 3)]

按照值排序

d = {"a":1 , "b":3, "c":2}

""" 
	得到排好序的列表
	>>>d.items()  
	>>>dict_items([('a', 1), ('b', 3), ('c', 2)])
	
	reverse是排序规则是否反过来,默认是升序
	reverse = False 升序
	reverse = True 降序

	>>>d_list
	>>>[('a', 1), ('c', 2), ('b', 3)]  

	
"""
def get_sorted_list(d, reverse=False):
    return sorted(d.items(), key=lambda x:x[1], reverse=reverse)

d_list = get_sorted_list(d)

我们可以获取排好序后的key和value(这完全取决于你需要哪个)

for key,val in d_list:
    print(key,val)
"""
out:
	a 1
	c 2
	b 3
"""

按照键排序

d = {"a":1 , "b":3, "c":2}
def sort_dict_by_keys(d, reverse=True):
	# 这里如果不强制转换会报错,因为d.keys()的类型是:<class 'dict_keys'>,没有sort方法
    keys = list(d.keys())
    keys.sort(reverse=reverse)
    return [(key,d[key]) for key in keys]

d_sort = sort_dict_by_keys(d)
print(d_sort)
"""
out:
	[('c', 2), ('b', 3), ('a', 1)]
"""

不指定排序依据

# 创建一个字典
dic={'a':'甘肃酒泉','b':'广州市','c':'四年'}
print(sorted(dic))

# 输出
['a', 'b', 'c']

指定排序依据,同时返回 key-value

print(sorted(dic.items(),key=lambda s:s[0]))
print(sorted(dic.items(),key=lambda s:s[1]))

# 输出
[('a', '甘肃酒泉'), ('b', '广州市'), ('c', '四年')]
[('c', '四年'), ('b', '广州市'), ('a', '甘肃酒泉')]

字典本身是无序的数据容器,如果要对字典进行排序,需要用到 sorted 这个函数,不指定排序依据时,默认按照 key 进行排序,并返回排序好的列表,指定排序依据时,需要用字典获取 key 和 value 的方法将 key 和 value 传入 sorted 函数,如果指定排序依据的同时,想要他获取键值对,则需要先获取字典的 item 传入,然后指定 key 参数,用 lambda 函数来获取 key,上述排序默认都是升序,如果降序排列,则将 reverse 参数设定为 True 即可。

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

相关文章

  • Python 中 Kwargs 解析的最佳实践教程

    Python 中 Kwargs 解析的最佳实践教程

    这篇文章主要介绍了Python中Kwargs解析的最佳实践,使用 kwargs,我们可以编写带有任意数量关键字参数的函数,当我们想为函数提供灵活的接口时,这会很有用,需要的朋友可以参考下
    2023-06-06
  • Python实现在tkinter中使用matplotlib绘制图形的方法示例

    Python实现在tkinter中使用matplotlib绘制图形的方法示例

    这篇文章主要介绍了Python实现在tkinter中使用matplotlib绘制图形的方法,结合实例形式分析了Python使用tkinter与matplotlib进行正弦曲线图形绘制的相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • python并发场景锁的使用方法

    python并发场景锁的使用方法

    这篇文章主要介绍了python并发场景锁的使用方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • python基础教程之简单入门说明(变量和控制语言使用方法)

    python基础教程之简单入门说明(变量和控制语言使用方法)

    这篇文章主要介绍了开始学习python的第一步需要知道的知识(变量和控制语言使用方法),需要的朋友可以参考下
    2014-03-03
  • windows下python 3.9 Numpy scipy和matlabplot的安装教程详解

    windows下python 3.9 Numpy scipy和matlabplot的安装教程详解

    这篇文章主要介绍了windows下python 3.9 Numpy scipy和matlabplot的安装教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python子类继承父类构造函数详解

    Python子类继承父类构造函数详解

    在本文里我们给大家分享一篇关于Python 子类继承父类构造函数的相关知识点内容,需要的朋友们跟着学习下。
    2019-02-02
  • python办公自动化之excel的操作

    python办公自动化之excel的操作

    在我们日常工作中,经常会使用&nbsp;Word、Excel、PPT、PDF&nbsp;等办公软件但是,经常会遇到一些重复繁琐的事情,这时候手工操作显得效率极其低下;通过 Python 实现办公自动化变的很有必要
    2021-05-05
  • Python实现从PPT中导出高分辨率图片

    Python实现从PPT中导出高分辨率图片

    这篇文章主要为大家分享了一个实用脚本——如何利用Python实现从PPT中导出高分辨率(高 dpi)的图片,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-05-05
  • openCV中KNN算法的实现

    openCV中KNN算法的实现

    KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • SpringBoot实现登录注册常见问题解决方案

    SpringBoot实现登录注册常见问题解决方案

    这篇文章主要介绍了SpringBoot实现登录注册常见问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论