【发布时间】:2018-10-19 09:21:33
【问题描述】:
我有一些这样的嵌套 JSON 数据结构:
my_dict = {
"audits": [
{
"id": 1,
"author_id": 15,
"events": [
{
"id": 307,
"type": "Comment",
"body": "*Ticket #25*",
"plain_body": "Ticket #25",
"public": False,
"attachments": [],
"audit_id":1
},
{
"id": 308,
"type": "Change",
"value": "solved",
"field_name": "status",
"previous_value": "open"
}
],
"ticket_id": 25
}
]
}
审核列表可以有很多元素,并且每个审核可以有很多“事件”。如果它们存在,我想从每个“事件”中删除“body”和“plain_body”属性,然后再继续处理它。 如果找到密钥,我尝试循环并删除它:
for k1 in my_dict.keys():
i = 0
for l2 in my_dict[k1]:
for l3 in l2.keys():
if l3 == 'events':
j = 0
for l4 in my_dict[k1][i][l3]:
for l5 in l4.keys():
if l5 in ('body', 'plain_body'):
print("Found key to delete: '{0}'".format(l5))
print(my_dict[k1][i][l3][j][l5])
# del my_dict[k1][i][l3][j][l5]
i += 1
除了这种挖掘数据结构的方法似乎根本不是pythonic,我在迭代它时无法从字典中删除:
RuntimeError: 迭代期间字典大小改变
任何人都可以提供一种 Python 方式来浏览 JSON 并删除不需要的属性吗?我找到了解决方案,使用简单的非分层字典,但使用嵌套字典。
【问题讨论】:
标签: python json dictionary nested del