python使用sorted()对字典按key或者value进行排序

您所在的位置:网站首页 sort字典排序 python使用sorted()对字典按key或者value进行排序

python使用sorted()对字典按key或者value进行排序

2023-09-08 20:26| 来源: 网络整理| 查看: 265

使用到了python的内建函数sorted()与lambda函数。

1.sorted函数

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

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

# 声明字典 key_value = {} # 初始化 key_value['一个'] = 56 key_value['二哥'] = 2 key_value['四个'] = 24 key_value['三个'] = 12 print('--key_value: ', key_value) 输出: --key_value:  {'一个': 56, '二个': 2, '四个': 24, '三个': 12} 2.按照key排序

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

key_value1 = sorted(key_value.keys()) # 默认是正序:从小到大 print('---key_value1: ', key_value1) ---key_value1:  ['一个', '三个', '二个', '四个']

这里只有key,没有value了,如果想要重新组织为字典,那遍历一下key_value:

dict_sort = {} for key in key_value1:     dict_sort[key] = key_value[key] print(dict_sort) {'一个': 56, '三个': 12, '二个': 2, '四个': 24}

简洁的方式:

key_value1 = sorted(key_value.items(), key=lambda v: v[0]) print('---key_value1: ', key_value1) ---key_value1:  [('一个', 56), ('三个', 12), ('二个', 2), ('四个', 24)]

存在的问题: 数据类型都变了,这个方法将原来的 dict 类型变成了 list 类型。 可以强制转换成dict,前面加个dict()就行了 key_value1 = dict(key_value1)

3.按照value值排序

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

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

# ------------------按照value进行排序,(正序:从小到大) new_value = sorted(key_value.items(), key=lambda kv:(kv[1], kv[0])) # new_value = sorted(key_value.items(), key=lambda kv: kv[1], reverse=True) print('-- new_value: ', new_value) # ------------------按照value进行排序,(倒序:从大到小) new_value1 = sorted(key_value.items(), key=lambda kv: kv[1], reverse=True) print('-- new_value: ',new_value1)

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

import operator key_value1 = dict(sorted(key_value.items(), key=operator.itemgetter(1))) print('---key_value1: ', key_value1) ---key_value1:  {'二个': 2, '三个': 12, '四个': 24, '一个': 56}

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

f = zip(key_value.keys(), key_value.values()) c = sorted(f) print(dict(c)) {'一个': 56, '三个': 12, '二个': 2, '四个': 24}

参考: https://www.runoob.com/python3/python-sort-dictionaries-by-key-or-value.html  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3