【发布时间】:2019-02-20 13:44:30
【问题描述】:
我有一个嵌套字典列表:
[{'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,然后循环遍历以c 为键的嵌套dicts。然后,如果c里面的dict不符合我的要求,我就删除它。
因此我的代码是:
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}]}]
【问题讨论】:
-
请添加您想要的输出,而不仅仅是您希望代码执行的粗略描述。
-
从上面的字典中,你想要哪种类型的输出??所以请在你的问题中添加你想要的输出..
标签: python list dictionary for-loop