python字典按照值的大小来排序的方法

def set_rank(a_dict):
    a_sort_list = sorted(a_dict.items(),key=lambda x : x[1], reverse=True)
    a_sort_dict = {}
    for n, s in a_sort_list:
        a_sort_dict[n] = s 
    return a_sort_dict

a_dict
这是个存放了N个元素且无序的字典,例如{'乙':660,'丁':102,'丙':200,'甲':2000}

a_sort_list = sorted(a_dict.items(),key=lambda x : x[1], reverse=True)   

这里用到了sorted函数,items函数,以及lambda函数。而这一行代码的输出结果会是:

[('甲', 2000), ('乙', 660), ('丙', 200), ('丁', 102)]
输出的整体类型是列表,元素是一个元组。

sorted() 函数的基本语法格式如下:

list = sorted(iterable, key=None, reverse=False)  

其中,iterable 表示指定的序列,key 参数可以自定义排序规则;reverse 参数指定以升序(False,默认)还是降序(True)进行排序。sorted() 函数会返回一个排好序的列表。

items()函数:

字典 items() 函数

以列表返回可遍历的(键, 值) 元组数组

lambda函数:

lambda函数为自定义函数,理解为不存在函数名的函数,举个例子,像之前我们定义函数

def zidingyi(x):
    x = x + 1
    return x

#调用函数
print(zidingyi(4))
# 输出结果会是5

而使用lambda函数则是:

zidingyi = lambda x : x+1
print(zidingyi(4))
# 输出结果会是5

其实就写法不同而已,lambda x 的x为传入参数,x+1则是函数内需要执行的内容,这样讲,应该不难理解了吧。

lambda x : x[1]

x[1],返回列表的第二个元素,我们这里是要items()函数返回(键, 值) 元组里的值,所以为x[1],需要是要按键的,则是x[0]。

a_sort_dict = {}
for n, s in a_sort_list:
    a_sort_dict[n] = s 
return a_sort_dict

由于sorted返回的是列表,而最终我们要的是字典,所以需要遍历整个列表,按字典的形式输出。

这样,我们就完成一次字典按照值从大到小的排序。

这是我日常的笔记,由于对字典排序是之前一个项目里面用到的,所以对它进行记录一下。以上的方法是学习了网上各路大神的思路,有哪些错误或者有其他更好的方法,请各位大神多多指导!!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐