- class DictDemo:
- def __init__(self,key,value):
- self.dict = {}
- self.dict[key] = value
- def __getitem__(self,key):
- return self.dict[key]
- def __setitem__(self,key,value):
- self.dict[key] = value
- dictDemo = DictDemo('key0','value0')
- print(dictDemo['key0']) #value0
- dictDemo['key1'] = 'value1'
- print(dictDemo['key1']) #value1
import weakref
实现weakref.ValueDict() descriptor 重写 set方法
----
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)]