Python中的字典如何实现按值排序

  介绍

这篇文章将为大家详细讲解有关Python中的字典如何实现按值排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

,这种方法更为简洁,更为推荐。

d={& # 39;一个# 39;:1 & # 39;c # 39;: 3 & # 39; b # 39;: 2} #首先建一个字典d      # d.items()返回的是:dict_items(((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)))      d_order=排序(d.items(),关键=λx: x[1],反向=False) #按字典集合中,每一个元组的第二个元素排列。   # x相当于字典集合中遍历出来的一个元组。   打印(d_order) #得到:[(& # 39;一个# 39;1),(& # 39;b # 39; 2), (& # 39; c # 39; 3)]

下面是排序排序方法的详细解释:

1。解决高阶函数语法格式:,排序(可迭代对象,关键=函数名,反向=False/真实)

,,,,作用:从可迭代对象中,依次取出一个元素,该元素再按照关键规定的排列依据排序。

,,,,可迭代对象:即可依次取值的对象,例如:集合,序列(列表,字符串,元组),字典等。

,,,,关键:是列表排列的依据,一般可以自定义一个函数返回排序的依据,再把函数名绑定给关键。

,,,,相反:译为反转,逆向默认等于假,从小到大排序。等于真实时,从大到小排序。

2。匿名函数λ的格式:<代码>,,,函数名=lambda (形参1,形参2,…):>

例如:<代码>关键=λx: x [1],,,,,,

,,,,,,,,,,,x:相当于字典集合中的一个元组,例:dict_items(((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)])中的(& # 39;一个# 39;1)或(& # 39;c # 39;(3)或(& # 39;b # 39; 2)

,,,,,,,,,,,x[1]:返回x中的第二个元素,即键值对元组中的值.dict_items(((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)])中的1或2或3

注意:

,(1)分类函数中的可迭代对象不要用字典d,那样只能迭代出的字典d的键。要用d.items()才可迭代出字典的键值对。

,,,例:不能用d_order=排序(d,关键=λx: x[1],反向=False)

,,,,,,,,,,,要用d_order=排序(d.items(),关键=λx: x[1],反向=False)

,(2)分类函数排好序后,要绑定一个对象(赋值),例:d_order=排序(d.items(),关键=λx: x[1],反向=False)。

,,,,因为字典是无序类型,用排序函数排好序后不绑定d_order,字典会自动打乱顺序。

Python中的字典是无序类型,没有自己的排序方法。但可以用列表的.sort()方法来进行排序。

我们首先要把字典转换为列的表,再进行排序。

,例子:

d={& # 39;一个# 39;:1 & # 39;c # 39;: 3 & # 39; b # 39;: 2} #首先建一个字典d      d.items() #得到:dict_items(((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)))      L=列表(d.items()) #得到列表:L=((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2))      lsort(关键=λx: x[1],反向=False) #按列表中,每一个元组的第二个元素从小到大排的序。   # x代表从L中遍历出的一个元组      打印(L) #得到:[(& # 39;一个# 39;1),(& # 39;b # 39; 2), (& # 39; c # 39; 3)]

,注意:

, 1。上面的例子中最要的一步就是:,L=列表(d.items ()),即:<代码> L=列表(dict_items(((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)])

,,,,,用列表()列表构造函数,将<代码> L=dict_items(((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)))> ,L=((& # 39;一个# 39;1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)]

,,,,,ps:今天早上我折腾了好久才发现,列表()构造函数竟然可以把d.items()产生的dict_items键值对集合类型,直接变成列的表,简直NB啊!

, 2。再简单说一下列表的L.sort()方法:,L.sort(关键=函数名,逆向=假/真)

,,,,L.sort():会自动遍历列表中的元素,即依次取出一个元素。再以关键绑定的函数为依据排序。

,,,,例如:L。sort(关键=λx: x[1],反向=False),,,,,,# L=((& # 39;一个# 39;,1),(& # 39;c # 39; 3), (& # 39; b # 39; 2)]

,,,,,,,,,,,,,,,,从列表L中取出第一个元素(& # 39;一个# 39;1)元组,以元组的第二个元素& # 39;1 & # 39;为排序依据,

,,,,,,,,,,,,,,,,再依次从列表中依次取出第二,第三,…个元素确定排序依据,

,,,,,,,,,,,,,,,,最后反向=False,按从小到大的顺序排列。

,,,,注:L.sort()内部还有其他参数,感兴趣的小伙伴可以用度娘搜一下。

其实小c君是在用jieba库进行文本词频统计时,才遇到了给字典排序的这个问题。

Python中的字典如何实现按值排序