How to access a field of a namedtuple using a variable for the field name?

后端 未结 4 2035
忘掉有多难
忘掉有多难 2020-12-28 11:19

I can access elements of a named tuple by name as follows(*):

from collections import namedtuple
Car = namedtuple(\'Car\', \'color mileage\')
my_car = Car(\'         


        
4条回答
  •  渐次进展
    2020-12-28 12:00

    since python version 3.6 one could inherit from typing.NamedTuple

    class HistoryItem(tp.NamedTuple):
        inp: str
        tsb: float
        rtn: int
        frequency: int = None
    
        def __getitem__(self, item):
            if isinstance(item, str):
                return getattr(self, item)
            return tp.NamedTuple.__getitem__(self, item)
            # return super().__getitem__(item)
    
        def get(self, item, default=None):
            try:
                return self[item]
            except (KeyError, AttributeError):
                return default
    

    then both item[num] or item["fld_name"] will work

提交回复
热议问题