将python对象和子对象列表展平为单个dict

将python对象和子对象列表展平为单个dict,python,dictionary,Python,Dictionary,我正在尝试将具有属性对象列表的资产对象列表转换为字典数组。我试图将父/子关系反规范化为一个字典 对于下面代码的上下文,我有一个具有短名称的资产对象,资产对象有一个具有属性值和属性名称的属性列表 我的预期结果是这样的 [{'name': 'Test', 'attr': 0.9}, {'name': 'Test2', 'attr': 0.5}] a_list = [] for a in self.assets: asset_dict = {'name': a.short_name }

我正在尝试将具有属性对象列表的资产对象列表转换为字典数组。我试图将父/子关系反规范化为一个字典

对于下面代码的上下文,我有一个具有短名称的资产对象,资产对象有一个具有属性值和属性名称的属性列表

我的预期结果是这样的

[{'name': 'Test', 'attr': 0.9}, {'name': 'Test2', 'attr': 0.5}]
a_list = []

for a in self.assets:
   asset_dict = {'name': a.short_name }
   
   for x in a.attributes:
      asset_dict = asset_dict | { x.attribute_name : x.attribute_value }

   a_list.append(asset_dict)
到目前为止,我是这样写的

[{'name': 'Test', 'attr': 0.9}, {'name': 'Test2', 'attr': 0.5}]
a_list = []

for a in self.assets:
   asset_dict = {'name': a.short_name }
   
   for x in a.attributes:
      asset_dict = asset_dict | { x.attribute_name : x.attribute_value }

   a_list.append(asset_dict)
这很好,但我正在寻找一个更整洁的解决方案

我尝试过

result = [{'name':a.short_name} | {x.attribute_name : x.attribute_value} for x in a.attribute for a in self.assets]
然而,我似乎无法获得正确的语法,也不确定是否可以这样做

编辑:根据请求输入(不包括类定义)

这应该起作用:

a_list = [
    {'name': a.short_name} |
    {x.attribute_name: x.attribute_value for x in a.attributes}
    for a in self.assets
]


您能否在问题中添加示例输入,以便我们更好地理解您的问题?