web-dev-qa-db-fra.com

Comment accéder à un champ d'un nom nommé en utilisant une variable pour le nom du champ?

Je peux accéder aux éléments d'un tuple nommé par son nom comme suit (*):

from collections import namedtuple
Car = namedtuple('Car', 'color mileage')
my_car = Car('red', 100)
print my_car.color

Mais comment utiliser une variable pour spécifier le nom du champ auquel je souhaite accéder? Par exemple.

field = 'color'
my_car[field] # doesn't work
my_car.field # doesn't work

Mon cas d'utilisation actuel est que je parcourt une base de données pandas avec for row in data.itertuples()] _. Je fais une opération sur la valeur d'une colonne particulière et je veux être capable de spécifier la colonne à utiliser par nom en tant que paramètre de la méthode contenant cette boucle.

(*) exemple tiré d'ici . J'utilise Python 2.7.

35
LangeHaare

Vous pouvez utiliser getattr

getattr(my_car, field)
47
juanpa.arrivillaga