operator的itemgetter和attrgetter
前几天在给个list做排序的时候,隐隐约约想起来有个语法糖可以替代lambda函数,用来获取list中dict的key,作为排序的key。
这个语法糖平时用得少,怎么都想不起来。今天查看python标准库operator时,终于把这两个方法找到了,做个笔记。
因为就是一个语法糖,太简单了,没必要做太多解释说明,直接贴代码吧。
from operator import itemgetter, attrgetter
__author__ = 'blackmatrix'
get_name = lambda user: user['name']
get_address = lambda user: getattr(user, 'address')
class User:
def __init__(self, name, address):
self.name = name
self.address = address
laowang = {'name': '老王', 'address': '隔壁'}
laoli = User('老李', '楼下')
if __name__ == '__main__':
# itemgetter('name') 和 get_name 作用是相同的
# 都是接受一个对象,获取对象key为name的值
# 主要用来替代只是为了获取value的lambda函数
print(itemgetter('name')(laowang))
print(get_name(laowang))
# 同样的,attrgetter('address')也是等同于get_address
# 用来替代只为了获取attr的lambda函数
print(attrgetter('address')(laoli))
print(get_address(laoli))
operator的itemgetter和attrgetter的更多相关文章
- 【386】operator 的 itemgetter、slice、and_、or_
itemgetter 用来获取数组中指定索引的元素 from operator import itemgetter itemgetter(1, 3, 5)('ABCDEFG') output: ('B ...
- python的operator.itemgetter('click')用于定义获取'click'项的函数
python的排序参见文章http://blog.csdn.net/longshenlmj/article/details/12747195 这里介绍 import operator模块 operat ...
- operator.itemgetter() 字典列表排序
## 字典列表排序 students = [ {"name": "Stanley", "age": 22, "score" ...
- Python中使用operator模块实现对象的多级排序
Python中使用operator模块实现对象的多级排序 今天碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了Python里的operator模块和sorted函数组合可以实现这个功能 ...
- operator笔记
# operator.itemgetter(*items) # 获取item >>> from operator import itemgetter # list使用下标进行返回 & ...
- Python标准库笔记(11) — Operator模块
Operator--标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数.有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数.因此o ...
- operator模块和functools模块
operator模块 在函数式编程中,经常需要把算术运算符当作函数使用.例如,不使用 递归计算阶乘.求和可以使用 sum 函数,但是求积则没有这样的函数. 我们可以使用 reduce 函数(5.2.1 ...
- 飘逸的python - 多条件排序及itemgetter的应用
曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相 ...
- python之itemgetter函数:对字典列表进行多键排序
itemgetter函数:对字典列表进行多键排序 from operator import itemgetter list_people = [ {'name': 'Mike', 'age': 22, ...
随机推荐
- M1阶段个人总结
经过4周的开发,我们团队的第一阶段已经结束了. 这一个月来我由于其他事情较多,所以开发的工作主要交给了另外的三名同学. 我主要负责制定代码规范和工程结构,通过github来跟进项目进度,提供一些技术支 ...
- <<梦断代码>>阅读笔记三
看完了这最后三分之一的<梦断代码>,意味着这本软件行业的著作已经被我粗略地过了一遍. 在这最后三分之一的内容中,我深入了解了在大型软件项目的运作过程中存在的困难和艰辛.一个大型软件项目的成 ...
- phpcms全站搜索
这篇博客已经移至http://www.cnblogs.com/nuanai/p/8028562.html中~~~~~~
- 『编程题全队』Beta 阶段冲刺博客四
1.提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID) (1) 昨天已完成的工作 孙志威: 1.新增添加提醒事项的按钮 2.添加了新建提醒框 3.测试了新的SubTask思 ...
- HDU 2029 Palindromes _easy version
http://acm.hdu.edu.cn/showproblem.php?pid=2029 Problem Description “回文串”是一个正读和反读都一样的字符串,比如“level”或者“ ...
- window.setTimeout
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setTimeout
- A glance for agile method
看看Apache最新的JIRA,新版的JIRA是有Agile模块的. Scrum早有耳闻,接触得也比较多,Kanban一次面试中提到过.今日深入查阅KanBan: http://www.agilewe ...
- ASP.NET MVC与WebForm对比
MVC优点:1.分离更彻底,分层清晰,易于维护和扩展.2.验证更加方便快捷.3.无ViewState,页面更加干净4.路由更容易定义url,对SEO比较好.5.强类型VIEW实现,更安全高效. Web ...
- 好文章之——PHP系列(一)
注:最近实习的公司是一家做电商企业,后台主要是php开发,好久不怎么接触php的我看了几篇相关文章,提高下对它的认识与理解,发现里面的学习思路还是非常好的,当然也会重新拾一下基础知识啦! 其实自己心中 ...
- 工作流管库的bpmn部署在数据库中
工作流管库的bpmn部署在数据库中 DB_schema_update_false 没有表则创建 有表则报错 DB_SCHEMA_UPDATE_TRUE 没有表则创建 有表则不创建 脚本更新则更新数据 ...