所以我有嵌套的字典对象
a = {'a':{'b':[1,2,3]}}
我引用了嵌套的'b':
c=a['a']['b']
现在我打电话
del c
print a
结果
{'a':{'b':[1,2,3]}}
删除变量c但它引用的对象仍然存在。我想完全删除嵌套的'b'对象。
很容易做到这一点del a['a']['b']
但是在实际应用中,嵌套太深,而且经常使用它是为了可行。
问题:如何删除仅在另一个变量中引用它的字典标记?
答案 0 :(得分:4)
del
仅处理提供的参考 ;它不能删除其他地方对相同值的引用。这不是Python的工作原理。
将路径存储在嵌套结构中:
path = ('a', 'b')
您可以解决此类路径:
def resolve_path(dictionary, path):
return reduce(dict.get, path, dictionary)
或者您可以获取父,之后您可以删除最后一个元素:
def del_endpoint(dictionary, path):
parent_path, last = path[:-1], path[-1]
parent = resolve_path(dictionary, parent_path)
del parent[last]
这当然非常特定于嵌套词典;对于属性或列表项,您需要额外的代码。