python利用lambda map 更新字典列表

 在python中可以利用map, lamda对list进行简单的迭代操作,使code更简洁。

(all codes use the python 3.x version)

>>> a = [1,2,3,4,5]
>>> s = list(map(lambda i: i**5, a))
>>> print(s)
[1, 32, 243, 1024, 3125]

在工作中实际遇到了一个问题,是对字典类型的数组进行更新操作。

如下创建好了一个字典,发现数据中所有的成员少了专业信息

 students = [{"name":"John", "age":18, "gender":"Male"}, {"name":"Amy", "age":17, "gender":"Female"}, {"name":"Eile", "age":18, "gender":"Female"}, {"name":"Henery", "age":19, "gender":"Female"}]

 第一种用for循环

>>> for student in students:
...     student["major"] = "computer"
>>> students
[{'name': 'John', 'age': 18, 'gender': 'Male', 'major': 'computer'}, {'name': 'Amy', 'age': 17, 'gender': 'Female', 'major': 'computer'}, {'name': 'Eile', 'age': 18, 'gender': 'Female', 'major': 'computer'}, {'name': 'Henery', 'age': 19, 'gender': 'Female', 'major': 'computer'}]

 一个简单功能的for循环可以用lambda可map来替代,所以更新后代码为

>>> list(map(lambda s: s.update({"major":"computer"}), students))
[None, None, None, None]
>>> students
[{'name': 'John', 'age': 18, 'gender': 'Male', 'major': 'computer'}, {'name': 'Amy', 'age': 17, 'gender': 'Female', 'major': 'computer'}, {'name': 'Eile', 'age': 18, 'gender': 'Female', 'major': 'computer'}, {'name': 'Henery', 'age': 19, 'gender': 'Female', 'major': 'computer'}]

 代码需注意:

1. python3中map()函数是Python中的一个内置函数,它的功能是:将指定的函数,依次作用于可迭代对象的每个元素,并返回一个迭代器对象。这个可迭代对象,可以是一个也可以是多个。所以要用list对map做类型转换

 2.  在lamda中不能写为 lamda s: s["major"] = "computer",因为在lamda中不接受赋值语句

3. 此方法返回的list均为none, 操作之后是原始组发生了改变,与以往生成一个新数组的方法不同。

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值