python - how - Obtener nombre de valor de namedtuple
python ordereddict to dict (2)
Si está intentando obtener los nombres reales, use el atributo _fields
:
In [50]: point = collections.namedtuple(''point'', ''x, y'')
In [51]: p = point(x=1, y=2)
In [52]: for name in p._fields:
....: print name, getattr(p, name)
....:
x 1
y 2
Tengo un módulo con colección:
import collections
named_tuple_sex = collections.namedtuple(
''FlightsResultsSorter'',
[''TotalPriceASC'',
''TransfersASC'',
''FlightTimeASC'',
''DepartureTimeASC'',
''DepartureTimeDESC'',
''ArrivalTimeASC'',
''ArrivalTimeDESC'',
''Airlines'']
)
FlightsResultsSorter = named_tuple_sex(
FlightsResultsSorter(''TotalPrice'', SortOrder.ASC),
FlightsResultsSorter(''Transfers'', SortOrder.ASC),
FlightsResultsSorter(''FlightTime'', SortOrder.ASC),
FlightsResultsSorter(''DepartureTime'', SortOrder.ASC),
FlightsResultsSorter(''DepartureTime'', SortOrder.DESC),
FlightsResultsSorter(''ArrivalTime'', SortOrder.ASC),
FlightsResultsSorter(''ArrivalTime'', SortOrder.DESC),
FlightsResultsSorter(''Airlines'', SortOrder.ASC)
)
y en otro módulo itero por esta colección y quiero obtener el nombre del elemento:
for x in FlightsResultsSorter:
self.sort(x)
así que en el código que quiero, en lugar de eso, x (que es un objeto) pasa por ejemplo "DepartureTimeASC" o "ArrivalTimeASC".
¿Cómo puedo obtener este nombre?
Atentamente
from itertools import izip
for x, field in izip(FlightsResultsSorter, named_tuple_sex._fields):
print x, field
También puedes usar FlightsResultsSorter._asdict()
para obtener un dict.