我有這個嵌套字典。字典的名稱已生成。
{
"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",
},
}
任何幫助將不勝感激。謝謝
uj5u.com熱心網友回復:
問題歸結為減少字典中重復的數量。第一次迭代字典很容易
new_dict = dict()
for key,value in outher_most_dictionary.items()
new_cict[key] = dedup(value)
!!!記住這將按插入順序迭代鍵、值決議!!!現在該功能dedup必須做什么?
- 創建新字典,讓我們說“tcid”
- 迭代傳遞字典的鍵值決議
- 如果從未“見過”值,??則將其添加到“tcid”
- 如果值已經“看到”一次將其添加到“tcid”
- 如果值已經“看到”超過 2 次,則跳過它
- 回傳“tcid”
uj5u.com熱心網友回復:
這是一個循序漸進的方法:
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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375722.html
