如果我有一個深層嵌套的字典,是否有一個內置的方法來減去/刪除「路徑」列表(例如: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. 從多個深度字典
- 3. 對稱字典其中d [a] [b] == d [b] [a]
- 4. 去除字典
- 5. 打印字典減去兩個元件
- 6. 減去兩個字典的值
- 7. 比較2字典和減去鍵
- 8. 如果密鑰存在,則從嵌套字典中減去字典值
- 9. 深套Python字典
- 10. 慶典: 「$ {A:-B}」 操作符
- 11. 從字典列表字典
- 12. 從IQueryable字典字典
- 13. 使用單詞字典將字符串a轉換爲b
- 14. 「深度比較」字典
- 15. 字典詞典失去其價值
- 16. 從字典深處刪除項目
- 17. 名單 - 從每個字典值中減去一個恆定
- 18. Python - 從字典結構中減去給定數量的樣本
- 19. Python字典:在字典中使用has_key和del時出現語法錯誤
- 20. 更換與字典的字典B鍵值值
- 21. 減少字典陣列
- 22. Python字典遞減排序
- 23. 串字典,字典
- 24. LINQ字典字典
- 25. 填字:從字典
- 26. 從python列表的字典創建字典的字典
- 27. 從字典中提取字典swift
- 28. 如何使字典從字典
- 29. 使Python字典從退出字典
- 30. 從字典中提取字典
「deep del」是什麼意思? – 2010-01-20 14:24:38
深度刪除,就像在特定鍵的一次操作中在嵌套字典上的多個級別使用'del'關鍵字一樣。 – 2010-01-20 21:25:00