【发布时间】:2019-06-04 04:35:50
【问题描述】:
我正在尝试使用列表删除嵌套字典中的元素。因此,我有一个列表,其中有一个字典作为其元素之一,然后又将字典作为其键值之一。我知道我将在最顶层列表和最底层字典中使用的键,而“中间”字典中的键是可变的。如果底部字典中的某个值不等于某个值,我想删除“中间”字典中的元素。
我想我需要三个嵌套的 for 循环才能进入每个字典,但无法弄清楚如何删除“中间”字典中的元素。
我目前的尝试:
#remove unneccessary elements
def getCleanResults(the_dict1):
for elem1 in the_dict1:
the_dict2 = elem['dict1_key']
for key, elem2 in the_dict2.keys():
the_dict3 = elem2[key]
for elem3 in the_dict3:
if 'keyWanted' in elem3:
del elem2
return the_dict
词典列表的模板我有:
a = {
{'key1':{'key1.1': {'delete': True, 'result': None},
'key1.2': {'delete': False, 'result': None}},'key2': 3},
{'key1':{'key1.1': {'delete': False, 'result': None},
'key1.2': {'delete': True, 'result': None}},'key2': 5}
}
我想删除下面有'delete' 即True 的键keyx.x,根据上面的示例,这将产生:
a = {
{'key1':{'key1.2': {'delete': False, 'result': None}},'key2': 3},
{'key1':{'key1.1': {'delete': False, 'result': None}},'key2': 5}
}
如上例所示,他们删除的键是 key1.1 和 key1.2,因此是可变的。
【问题讨论】:
-
我认为您提供的嵌套字典有很多语法错误。你能修复你的字典,让它准确地代表你的数据结构,看看它在你的机器上是否有任何语法错误吗?另外,我认为您的意思是删除上一段中“删除”为
True的键? -
a不是有效的字典。请更正。 -
修复了
a字典。 -
它已被@Slam 修复,现在再次修复后它不再是有效的字典...您的密钥不能是字典,因为它不可散列。在你的情况下,你的键必须是一个字符串,而值是一个字典,它有自己的字符串键,另一个字典作为它自己的值。
-
@KaanTheGuru,
a仍然不是有效的字典,因为它没有键,只有值。
标签: python python-3.x dictionary nested