如果我有一个深层嵌套的字典,是否有一个内置的方法来减去/删除“路径”列表(例如:keyA.keyB.key1,keyA.keyC.key2等)或第二个字典的键从原来的字典?或者也许有一个通用模块具有这样的功能?从字典B(深del)减去字典A?
4
A
回答
1
另一种解决方案:
d = {
'A' : {
'C' : {
'D' : {
'E' : 4,
},
'F' : 5,
},
},
'B' : 2,
}
def DeepDictDel(path, dict):
for key in path.split('.'):
owner = dict
dict = dict[key]
del owner[key]
print d # prints {'A': {'C': {'D': {'E': 4}, 'F': 5}}, 'B': 2}
DeepDictDel('A.C.D', d)
print d # prints {'A': {'C': {'F': 5}}, 'B': 2}
+0
这更像我想象中的(如使用“key.key”路径),但是balpha的答案也很棒。 – 2010-01-21 15:24:50
2
这里有一个建议:
D = { "keyA": {
"keyB" : {
"keyC" : 42,
"keyD": 13
},
"keyE" : 55
}
}
def remove_path(dictionary, path):
for node in path[:-1]:
dictionary = dictionary[node]
del dictionary[path[-1]]
remove_path(D, ["keyA", "keyB", "keyD"])
print D # prints {'keyA': {'keyB': {'keyC': 42}, 'keyE': 55}}
你可能会想介绍一些错误检查,太。
2
万一其他答案是不是你要找什么,这里有一个减去一个字典从另一个。
def subtract(a, b):
""" Remove the keys in b from a. """
for k in b:
if k in a:
if isinstance(b[k], dict):
subtract(a[k], b[k])
else:
del a[k]
相关问题
- 1. Python 2.7搜索字典A与字典B中的键
- 2. 对称字典其中d [a] [b] == d [b] [a]
- 3. 从多个深度字典
- 4. 去除字典
- 5. 减去两个字典的值
- 6. 打印字典减去两个元件
- 7. 深套Python字典
- 8. 庆典: “$ {A:-B}” 操作符
- 9. 从IQueryable字典字典
- 10. 从字典列表字典
- 11. “深度比较”字典
- 12. 字典词典失去其价值
- 13. 从字典深处删除项目
- 14. 更换与字典的字典B键值值
- 15. 减少字典阵列
- 16. 使用Python将深层嵌套字典转换为1D字典
- 17. 串字典,字典
- 18. 如何使字典从字典
- 19. 从默认字典创建字典
- 20. 使Python字典从退出字典
- 21. 从字典中提取字典swift
- 22. 从Python字典
- 23. 从字典
- 24. 从字典
- 25. 从字典
- 26. 从字典
- 27. 从字典
- 28. 从字典
- 29. 从字典
- 30. 从字典
“deep del”是什么意思? – 2010-01-20 14:24:38
深度删除,就像在特定键的一次操作中在嵌套字典上的多个级别使用'del'关键字一样。 – 2010-01-20 21:25:00