[英]Remove duplicates from nested dictionary with python
我有這個嵌套字典。 字典的名稱已生成。
{
"sphere": {
1: "False",
2: "False",
3: "False",
4: "True",
5: "True",
6: "False",
7: "False",
8: "False",
9: "False",
},
"cube": {
1: "True",
2: "True",
3: "False",
4: "False",
5: "False",
6: "True",
7: "True",
8: "False",
9: "False",
},
"torus": {
1: "True",
2: "True",
3: "True",
4: "False",
5: "False",
6: "False",
7: "False",
8: "True",
9: "True",
},
}
我想刪除所有重復的值,但在字典中保留第一個和最后一個相等的值,並得到類似的結果:
{
"sphere": {
1: "False",
3: "False",
4: "True",
5: "True",
6: "False",
9: "False",
},
"cube": {
1: "True",
2: "True",
3: "False",
5: "False",
6: "True",
7: "True",
8: "False",
9: "False",
},
"torus": {
1: "True",
3: "True",
4: "False",
7: "False",
8: "True",
9: "True",
},
}
任何幫助將不勝感激。 謝謝
問題歸結為字典中重復項數量的減少。 第一次迭代字典很容易
new_dict = dict()
for key,value in outher_most_dictionary.items()
new_cict[key] = dedup(value)
,!!請記住,這將按插入順序遍歷鍵、值解析!!! 現在dedup
數據刪除需要做什么?
這是一個循序漸進的方法:
import json
D = {
"sphere": {
1: "False",
2: "False",
3: "False",
4: "True",
5: "True",
6: "False",
7: "False",
8: "False",
9: "False"
},
"cube": {
1: "True",
2: "True",
3: "False",
4: "False",
5: "False",
6: "True",
7: "True",
8: "False",
9: "False"
},
"torus": {
1: "True",
2: "True",
3: "True",
4: "False",
5: "False",
6: "False",
7: "False",
8: "True",
9: "True"
},
}
def clean(v, dk):
for k in dk[:-1]:
del v[k]
def process(v):
p = None
dk = []
for k in list(v.keys()):
if v[k] == p:
dk.append(k)
else:
clean(v, dk)
p = v[k]
dk = []
clean(v, dk)
for v in D.values():
process(v)
print(json.dumps(D, indent=2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.