Namedtuples maken om data op te slaan
Wanneer je met data werkt, gebruik je vaak een dictionary zodat je sleutelnamen kunt gebruiken om de code leesbaarder te maken en de data makkelijker te benaderen. Python heeft nog een andere container, een namedtuple. Dat is een tuple, maar dan met namen voor elke positie in de tuple. Je maakt er eentje door een naam voor het tupletype en een lijst met veldnamen door te geven.
Bijvoorbeeld, Cookie = namedtuple("Cookie", ['name', 'quantity']) maakt zo’n container. Je kunt er nieuwe van dit type maken met Cookie('chocolate chip', 1), waarna je de naam kunt benaderen via het attribuut name en de hoeveelheid via het attribuut quantity.
In deze oefening ga je de pinguïn-gewichtslogdata waarmee je werkte, omzetten naar namedtuples voor beschrijvendere code.
Deze oefening maakt deel uit van de cursus
Datatypen in Python
Oefeninstructies
- Importeer
namedtupleuitcollections. - Maak een namedtuple met de naam
SpeciesDetailsmet het typeSpeciesDetailsen de velden'species','sex'en'body_mass'. - Maak een lijst met de naam
labeled_entries. - Itereer over de lijst
weight_log, pak elk item uit inspecies,sexenbody_mass, maak voor elke entry een nieuweSpeciesDetails-namedtuple-instantie en voeg die toe aanlabeled_entries.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Import namedtuple from collections
from collections import ____
# Create the namedtuple: SpeciesDetails
SpeciesDetails = ____(____, ['species', 'sex', 'body_mass'])
# Create the empty list: labeled_entries
labeled_entries = []
# Iterate over the weight_log entries
for ____, ____, ____ in ____:
# Append a new SpeciesDetails namedtuple instance for each entry to labeled_entries
____
print(labeled_entries[:5])