从 namedtuple 获取值的名称

问题描述 投票:0回答:2

我有一个集合模块:

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)
)

在另一个模块中,我遍历了这个集合,我想获取项目的名称:

for x in FlightsResultsSorter:
            self.sort(x)

所以在上面的代码中,我想要传递的不是

x
(这是一个对象),例如,
DepartureTimeASC
ArrivalTimeASC
.

我怎样才能得到这个名字?

python namedtuple
2个回答
87
投票

如果您想获取实际名称,请使用

_fields
属性:

from collections import namedtuple

Point = namedtuple('Point', 'x, y')
p = Point(x=1, y=2)
for name in Point._fields:
    print(name, getattr(p, name))

38
投票
from itertools import izip

for x, field in izip(FlightsResultsSorter, named_tuple_sex._fields):
    print x, field

您也可以使用

FlightsResultsSorter._asdict()
来获取字典。

© www.soinside.com 2019 - 2024. All rights reserved.