【发布时间】:2019-07-10 13:33:22
【问题描述】:
我有一个架构,并且我有一个应该包含在其中的嵌套字段列表。 基本上,我所拥有的是:
[{'name': 'a', 'type': 'string'},
{'name': 'b', 'type': 'string'},
{'name': 'c', 'type': 'string'},
{'name': 'd', 'type': 'string'},
{'name': 'e', 'type': 'string'},
{'name': 'attr', 'type': 'string'},
{'name': 'f', 'type': 'string'},
{'name': 'g', 'type': 'string'},
{'name': 'h', 'type': 'string'},
{'name': 'i', 'type': 'string'},
{'name': 'j', 'type': 'string'},
{'name': 'k', 'type': 'string'}]
但是当“name”是“attr”时,我想向它添加另一个字典 k-v 对,键为“fields”,值作为另一个嵌套的字典列表,格式与上面的字典相同。这将使它看起来像:
[{'name': 'a', 'type': 'string'},
{'name': 'b', 'type': 'string'},
{'name': 'c', 'type': 'string'},
{'name': 'd', 'type': 'string'},
{'name': 'e', 'type': 'string'},
{'name': 'attr', 'type': 'string', 'fields': [{'name': 'aa',....}],
{'name': 'f', 'type': 'string'},
{'name': 'g', 'type': 'string'},
{'name': 'h', 'type': 'string'},
{'name': 'i', 'type': 'string'},
{'name': 'j', 'type': 'string'},
{'name': 'k', 'type': 'string'}]
下面,master_schema_set 和nestedschemaset 都是我转换的集合。
finalschema = [{'name':l} for l in master_schema_set]
finalschemanested = [{'name':l} for l in nestedschemaset]
for i in finalschema:
i.update({"type":'string'}) #all types will always be string
for item,val in i.items():
if val == 'attr':
i.update({'fields':finalschemanested})
运行它会给我一个错误“迭代期间字典更改大小”,但最终这就是我想要的。有什么更好的方法来实现这一目标?
【问题讨论】:
标签: python list dictionary list-comprehension