python operator.itemgetter

 

python四个魔法方法__len__,__getitem__,__setitem__,__delitem_

[python]  view plain copy print ?
  1. class DictDemo:  
  2.       def __init__(self,key,value):  
  3.             self.dict = {}  
  4.             self.dict[key] = value  
  5.       def __getitem__(self,key):  
  6.             return self.dict[key]  
  7.       def __setitem__(self,key,value):  
  8.             self.dict[key] = value  
  9. dictDemo = DictDemo('key0','value0')  
  10. print(dictDemo['key0']) #value0  
  11. dictDemo['key1'] = 'value1'  
  12. print(dictDemo['key1']) #value1  

import weakref
实现weakref.ValueDict()    descriptor  重写 set方法                               

import weakref  #实现通过id获取object

_id2obj_dict = weakref.WeakValueDictionary()

def remember(obj):
    oid = id(obj)
    _id2obj_dict[oid] = obj
    return oid

def id2obj(oid):
    return _id2obj_dict[oid]

----

operator is a built-in module providing a set of convenient operators. In two wordsoperator.itemgetter(n) constructs a callable that assumes iterable object (list, tuple, set) as input an fetches n-th element out of it.

So, you can't use key=a[x][1] there, because python have no idea what x is. Instead, you could use alambda function (elem is just a variable name, no magic here):

a.sort(key=lambda elem: elem[1])

Or just ordinary function:

def get_second_elem(iterable):
    return iterable[1]

a.sort(key=get_second_elem)
--------------------
  • >>> students = ['dave', 'john', 'jane']
    >>> newgrades = {'john': 'F', 'jane':'A', 'dave': 'C'}
    >>> sorted(students, key=newgrades.__getitem__)
    ['jane', 'dave', 'john']
>>> sorted(student_tuples, key=itemgetter(2), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

>>> sorted(student_objects, key=attrgetter('age'), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值