У меня есть некоторая вложенная структура данных 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
Помимо того, что такой подход к копанию структуры данных кажется совсем не пифоническим, я не могу удалить его из разногласийпока я перебираю его:
RuntimeError: словарь изменил размер во время итерации
Может кто-нибудь предоставить питонский способ просмотра JSON и удаления нежелательных свойств?Я нашел решения для этого с помощью простых неиерархических диктовок, но с вложенными.