Python对列表内部的字典进行排序 --lambda,sort
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python对列表内部的字典进行排序 --lambda,sort,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3029字,纯文字阅读大概需要5分钟。
内容图文
![Python对列表内部的字典进行排序 --lambda,sort](/upload/InfoBanner/zyjiaocheng/631/eb22ecd0d2874410bab82539d8c97710.jpg)
我的需求
定义1个list类型的变量,名称是test
test包含3个元素,每个元素都是dict类型
现在我想要实现的是,按照每个dict中age值的大小对test的元素进行排序
需要借助lambda
test=[{'name':'Bob','age':14},{'name':'Lisa','age':16},{'name':'Sam','age':9}]
test.sort(key=lambda i:i['name'])
print(test)
test.sort(key=lambda i:i['age'],reverse=True)
print(test)
[{'name': 'Lisa', 'age': 16}, {'name': 'Bob', 'age': 14}, {'name': 'Sam', 'age': 9}]
如果不使用lambda,也可以单独定义1个函数来获取 排序的元素,像这样:
关键是弄清楚sort方法,key参数的使用规则
def getAge(elem):
return elem['age']
test.sort(key=getAge)
print(test)
[{'name': 'Sam', 'age': 9}, {'name': 'Bob', 'age': 14}, {'name': 'Lisa', 'age': 16}]
知识分解
Python-lambda用法
lambda函数也叫匿名函数,即,函数没有具体的名称
一、基础
lambda语句构建的其实是一个函数对象。匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果
lembda(a,b:a+b)
#关键字lembda表示匿名函数,冒号前是参数,可以有多个,用逗事情隔开,冒号右边的返回值
lembda的优点:
- 使用python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简
- 对于一些抽象的,不会别的地方复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
- 使用lambda在某些时候让代码更容易理解。
举一个简单的例子:
def f(x):
return x*2
print (f(4))
8
python中使用lambda的话,写成这样
g=lambda x:x*2
print(g(4))
8
二、进阶-内置函数
map()
遍历序列,对序列中的每个元素进行操作,最终获取新的序列
li=[11,22,33]
sl=[1,2,3]
new_list=map(lambda a,b:a+b,li,sl)
print(new_list)#map方法会返回一个filter对象
<map object at 0x7f31e83aad30>
print(list(new_list))
[12, 24, 36]
reduce()
对于序列内所有元素进行累计操作
from functools import reduce
li=[11,22,33]
result = reduce(lambda a,b :a+b,li)
#reduce的第1个参数,函数必须要有2个参数
#reduce的第2个参数,要循环的序列
#reduce的第3个参数,初始值
print(result)
66
filter()
对序列中的元素进行筛选,最终获取符合条件的序列
li=[11,22,33]
new_list=filter(lambda a:a>22,li)
print(new_list)#filter方法会返回一个filter对象
<filter object at 0x7f31e9170e48>
print(list(new_list))
[33]
sort函数
先来熟悉一下普通的排序方式
如果是对list类型数据进行排序,可以使用list.sort()方法,该方法会直接修改原list元素的排列顺序
b=[4,16,9]
b.sort()
b
[4, 9, 16]
b.sort(reverse=True)
b
[16, 9, 4]
如果只使用reverse()方法,可以对列表进行逆序显示
c=[3,5,1]
c.reverse()
c
[1, 5, 3]
语法
sort()函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
语法:
list.sort(key=None,reverse=False)
参数
- key --主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代的一个元素进行排序。
- reverse --排序规则,reverse=True 降序,reverse=False 升序(默认)
返回值
该方法没有返回值,但是会对列表的对象进行排序。
示例
alist=['Bob','Tom','Zara','Lisa']
alist.sort()#默认升序
alist
['Bob', 'Lisa', 'Tom', 'Zara']
alist.sort(reverse=True)#降序
alist
['Zara', 'Tom', 'Lisa', 'Bob']
通过指定列表中的元素进行排序
def takeSecond(elem):
return elem[1]
random=[(1,4),(5,2,),(1,9)]
random.sort(key=takeSecond)
random
[(5, 2), (1, 4), (1, 9)]
参考文档
Python-lambda用法
如何实现python语言中列表中的字典类型元素排序
内容总结
以上是互联网集市为您收集整理的Python对列表内部的字典进行排序 --lambda,sort全部内容,希望文章能够帮你解决Python对列表内部的字典进行排序 --lambda,sort所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。