Python 一种简单的字典结构的值排序函数设计

python中的排序内置函数是sorted()但是返回的是list结构。

想要一键获得字典的值排序?一下是一种关于字典排序的函数设计

字典按照值大小排序函数,dict0是输入的字典 ,reverse 决定输出是升序还是降序,True–>降序,False—>升序

def dict_sort(dict0:dict,reverse = False):
#声明函数体reverse 默认值和sorted ()默认的是False
    try:
        listd = list(dict0.items())# listd 结构是 [(key0:valuses0),...)]
        listd = sorted(listd,key=lambda x:x[1],reverse = reverse)#sort
        new_dict = {}
        #以下代码为转为字典形式输出
        for i in listd:
            new_dict[i[0]] = i[1]
        return new_dict
    except Exception as e:
        print(e)
        return -1

插入于2019年10月8日

**

补充说明一点 如果在实际应用中只是要排序的结果 而不是整个排序后的字典,那么可以省略转化字典的步骤,一下介绍两种简洁使用方法字典排序。

  • 使用 匿名函数lambda 表达式 的字典排序查看结果:classCount数据类型是一个字典
  • 使用operator标准库中的itemgetter()方法字典排序

**

原理说明:

**两种排序都是基于字典经过item()的转换生成了一个元组结构,经过选择原则的索引第一项,key = lambda x:x[1],或者key=operator.itemgetter(1),这是operator的一个索引方法。
然后在sorted中生成了 列表里面嵌套了元组结构 看下面代码结果。

import operator
dict ={"a":1,"b":10,"c":8,"d":9}#
#方法1
print(sorted(dict.items(),key = operator.itemgetter(1),reverse= True))
print(dict)
print("-----------------------------------\n")
#方法2
print(sorted(dict.items(),key=lambda x:x[1],reverse=True))
print(dict)

结果:[(‘b’, 10), (‘d’, 9), (‘c’, 8), (‘a’, 1)]{‘a’: 1, ‘b’: 10, ‘c’: 8, ‘d’: 9}-----------------------------------[(‘b’, 10), (‘d’, 9), (‘c’, 8), (‘a’, 1)]{‘a’: 1, ‘b’: 10, ‘c’: 8, ‘d’: 9}

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值