collections.namedtuple
¶
Shortcut For Simple Data-Holding Classes¶
Much writing for a simple data holder
class Person: def __init__(self, firstname, lastname): self.firstname = firstname self.lastname = lastname person = Person('Joerg', 'Faschingbauer') print(person.firstname, person.lastname)
Joerg Faschingbauer
Written shorter (and with much more features - but read on)
from collections import namedtuple Person = namedtuple('Person', ('firstname', 'lastname')) person = Person('Joerg', 'Faschingbauer') print(person.firstname, person.lastname)
Joerg Faschingbauer
Constructing From Iterable: _make()
¶
Data-holding classes are popular with tabular data (CSV, databases, …)
Rows are iterable
⟶
someclass._make()
Example: rows read from a CSV file
persons_from_csv = [ ['Joerg', 'Faschingbauer'], ['Caro', 'Faschingbauer'], ]
Turning each into a
Person
objectfor person in map(Person._make, persons_from_csv): print(person.firstname, person.lastname)
Joerg Faschingbauer Caro Faschingbauer
Convert To dict
: _asdict()
¶
person = Person('Joerg', 'Faschingbauer')
person_dict = person._asdict()
person_dict
{'firstname': 'Joerg', 'lastname': 'Faschingbauer'}