加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python 对字典分别按照key值、value值进行排序

发布时间:2020-12-20 12:52:42 所属栏目:Python 来源:网络整理
导读:1.sorted函数 首先介绍sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。 其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定

1.sorted函数
首先介绍sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。

其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序(从大到小),reverse=false则是顺序(从小到大),默认是reverse=false。

2.按照key排序
要对字典按照key排序,可以直接调用sorted函数。

my_dict = {lilee:25,age:24,phone:12}
sorted(my_dict.keys())
输出结果为

[age,lilee,phone]

直接使用sorted(my_dict.keys())就能按key值对字典排序,这里是按照顺序对key值进行排序的,如果想按照倒序排序的话,只需要将reverse置为true即可。

sorted(my_dcit.keys(),reverse = true)

3.按照value值排序
共有三种方法可以实现将字典按照value值进行排序

(1)key使用lambda匿名函数取value进行排序

d = {lilee:25,wangyan:21,liqun:32,age:19}
sorted(d.items(),key=lambda item:item[1])
输出结果为

[(age,19),(wangyan,21),(lilee,25),(liqun,32)]
如果需要倒序则

sorted(d.items(),key=lambda item:item[1],reverse=True)
得到的结果就会是

[(liqun,32),(age,19)]

(2)使用operator的itemgetter进行排序

import operator
sorted(d.items(),key=operator.itemgetter(1))
输出结果为

[(age,32)]

(3)将key和value分装成元组,再进行排序

f = zip(d.keys(),d.values())
c = sorted(f)
输出结果为

[(age,32)]

4.取出排序的前n个value值和key值
可以按照如下操作:

before = {
"key1": 5,"key2": 6,"key3": 4,"key4": 3,}
# 排序
after = dict(sorted(before.items(),key=lambda e: e[1]))

print(after)

# 取出前几个, 也可以在sorted返回的list中取前几个

required_cnt = 2
cnt = 0 
for key,value in after.items():
cnt += 1
if cnt > required_cnt:
break
print("{}:{}".format(key,value))

--------------------- 原文:https://blog.csdn.net/laobai1015/article/details/85114570

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读