У меня есть список вложенных словарей:
[{'a': 1,
'b': 'string',
'c': [{'key1': 80,
'key2': 'string',
'key3': 4033},
{'key1': 324,
'key2': 'string',
'key3': 4034,
'key4': 1}]},
{'a': 1,
'b': 'string',
'c': [{'key1': 80,
'key2': 'string',
'key3': 4033},
{'key1': 324,
'key2': 'string',
'key3': 4034,
'key4': 1,
'key5': 2}]}]
Обратите внимание, что значения ключа c
снова представляют собой список словарей.Теперь я хочу отфильтровать из этого списка все словари с ключом c
, которые не содержат key1
, key2
, key3
& key4
.
.сначала, второй и т. д. dict
в списке, а затем зацикливание на вложенных dict
с ключом c
.Затем, если dict
внутри c
не соответствует моему требованию, я его удаляю.
Поэтому мой код будет:
for j in range(len(mydict)):
for i in range(len(mydict[j]["c"])):
if not all (k in mydict[j]["c"][i] for k in ("key1", "key2", "key3", "key4")):
del(mydict[j]["c"][i])
Но я получаю IndexError: list index out of range
ошибка.Где моя ошибка?
Мой желаемый результат будет:
[{'a': 1,
'b': 'string',
'c': [{'key1': 324,
'key2': 'string',
'key3': 4034,
'key4': 1}]},
{'a': 1,
'b': 'string',
'c': [{'key1': 324,
'key2': 'string',
'key3': 4034,
'key4': 1,
'key5': 2}]}]