python列表中字典排序

萌新对编程感兴趣,刚开始学python

img


排序问题,lambda简化的函数恢复回去该怎么写,还是用sort,该怎么写?

这里的底层执行流程是什么样的?

sort 方法是先把列表中的每个元素传递给 lambda函数 中的x ,
lambda函数会返回一个用于比较大小的值。
之后用这些返回的值来作为排序的数据进行比较,
如果不使用函数就只能是列表中的每个字典本身来作为排序的数据进行比较。

lambda函数改成普通函数也是同样的效果

li = [
    {'name': 'aa', 'age': 20},
    {'name': 'bb', 'age': 19},
    {'name': 'cc', 'age': 23},
    {'name': 'dd', 'age': 18}
]
def f(x):
    return x['age']
li.sort(key=f)
print(li)

如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

本质上是对传统的排序算法进行了封装,让开发者提高效率。

列表的sort函数,语法list.sort(reverse=True|False, key=myFunc),其中key是指定排序标准的函数,代码中用lambda匿名函数是简洁的写法,是将列表中每个元素(例中为字典)作为参数x传递,比较的标准就是字典的值x[key]。如题主要求的那样,既用普通函数又用sort函数比较的话,可以改写成这样,作用和效果是一样的:

students = [{'name': 'tom', 'age': 20}, {'name': 'jack', 'age': 19}, {'name': 'rose', 'age': 23}, {'name': 'lily', 'age': 19}]
def comp(x:dict):
    return x['age']
students.sort(key=comp)
print(students)

如对你有帮助,请点击采纳支持。