这篇文章将为大家详细讲解有关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库进行文本词频统计时,才遇到了给字典排序的这个问题。