Добавление нового свойства в экземпляр namedTuple в python и преобразование в dict - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь добавить новое свойство в именованный кортеж, в котором я хочу сохранить некоторые значения. Сообщите, что я хочу преобразовать его обратно в JSON, чтобы передать его как параметр в api. Я нашел ответ, чтобы добавить свойство в namedTuple, однако он создает тип и не изменяет сам экземпляр. Каков наилучший способ достичь вышеуказанной функциональности.

как добавить поля в именованный набор?

def _json_object_hook(d): 
    return namedtuple('X', d.keys())(*d.values())
def json2obj(data):
    return json.loads(data, object_hook=_json_object_hook)

def lambda_handler(event, context):
    registrationResponse = s3.get_object(Bucket=bucket, Key=registrationkey)
    registrationResponse = registrationResponse['Body'].read().decode('utf-8')
    registration = json2obj(registrationResponse)   
    abc = namedtuple('registration',registration._fields+('point',))
    y = abc._asdict()  # TypeError: _asdict() missing 1 required positional argument: 'self'

В отладчике

type(abc) #<class 'type'>
type(registration) #<class '__main__.X'>    
registration #<X, len() = 7>    
abc #<class '__main__.registration'>
...