我正在尝试向一个命名元组添加一个新属性,我想在其中存储一些值。我想将其转换回JSON,以在api中作为参数传递。我找到了一个向namedTuple添加属性的答案,但是它创建了一个类型,并且不修改实例本身。实现上述功能的最佳方式是什么
how do I add fields to a 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'>
namedtuple
不创建命名的元组。它创建一个类,然后您应该实例化:如果你有类似dict的数据
您可以使用以下命令从中实例化类似的记录:
不要更改namedtuple字段,因为与元组一样,它们应该是不可变的
在可选的添加/更改dict key中,基于其key构建一个新的
Record
类,并实例化dict的namedtuple,以通过字段名进行访问相关问题 更多 >
编程相关推荐