getters
Variants of operator.attrgetter()
, operator.itemgetter()
and operator.methodcaller()
which operate on values within sequences.
New in version 3.2.0.
Classes:
|
Returns a callable object that fetches |
|
Returns a callable object that fetches |
|
Returns a callable object that calls the method name on the item at index |
-
class
attrgetter
(idx, attr)[source] Returns a callable object that fetches
attr
from the item at indexidx
in its operand.The attribute name can contain dots. For example:
After
f = attrgetter(0, 'name')
, the call callf(b)
returnsb[0].name
.After
f = attrgetter(3, 'name.first')
, the callf(b)
returnsb[3].name.first
.
>>> from pathlib import Path >>> attrgetter(0, 'name')([Path("dir/code.py")]) 'code.py' >>> attrgetter(2, 'parent.name')([Path("dir/coincidence.py"), Path("dir/wheel.py"), Path("dir/operator.py")]) 'dir'
See also
-
class
itemgetter
(idx, item)[source] Returns a callable object that fetches
item
from the item at indexidx
in its operand, using the__getitem__()
method.For example:
After
f = itemgetter(0, 2)
, the call callf(r)
returnsr[0][2]
.After
g = itemgetter(3, 5)
, the callg(r)
returnsr[3][5]
.
The items can be any type accepted by the item’s
__getitem__()
method. Dictionaries accept any hashable value. Lists, tuples, and strings accept an index or a slice:>>> itemgetter(0, 1)(['ABCDEFG']) 'B' >>> itemgetter(1, 2)(['ABC', 'DEF']) 'F' >>> itemgetter(0, slice(2, None))(['ABCDEFG']) 'CDEFG' >>> army = [dict(rank='captain', name='Blackadder'), dict(rank='Private', name='Baldrick')] >>> itemgetter(0, 'rank')(army) 'captain'
See also
-
class
methodcaller
(_idx, _name, *args, **kwargs)[source] Returns a callable object that calls the method name on the item at index
idx
in its operand.If additional arguments and/or keyword arguments are given, they will be passed to the method as well. For example:
After
f = methodcaller(0, 'name')
, the callf(b)
returnsb[0].name()
.After
f = methodcaller(1, 'name', 'foo', bar=1)
, the callf(b)
returnsb[1].name('foo', bar=1)
.
>>> from datetime import date >>> methodcaller(0, 'upper')(["hello", "world"]) 'HELLO' >>> methodcaller(1, 'center', 9, "=")(["hello", "world"]) '==world==' >>> methodcaller(0, 'replace', year=2019)([date(2021, 7, 6)]) datetime.date(2019, 7, 6)
See also
- Parameters
_idx – The index of the item to call the method on.
_attr – The name of the method to call.
*args – Positional arguments to pass to the method.
**kwargs – Keyword arguments to pass to the method.