python使用sorted()对字典按key或者value进行排序 |
您所在的位置:网站首页 › sort字典排序 › python使用sorted()对字典按key或者value进行排序 |
使用到了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 |