我正在嘗試將 2 個 JSON 與以下結構進行比較:dict 與 dicts 串列。這個想法是從串列中洗掉與其內容匹配的所有字典,然后檢查兩個串列是否為空。如果它們為空,則此類鍵上的值是匹配的。否則輸出與控制臺\檔案不匹配的 JSON 的其余部分。
但看起來簡單地洗掉 dicts 是行不通的。
下面的最小作業代碼:
test = { "first" : [{"Name": "Harry", "Age": 18}, {"Name": "Harry", "Age": 17}, {"Name": "Harry", "Age": 19}] ,
"second" : [{"Name": "Harry", "Age": 20}, {"Name": "Harry", "Age": 15}, {"Name": "Harry", "Age": 11}]}
print(test.keys())
for key in test.keys():
print(key)
data = test[key]
data_remove_from = test[key]
for dict_test in data:
data_remove_from.remove(dict_test)
print(data_remove_from)
上面的代碼導致:
dict_keys(['first', 'second'])
first
[{'Name': 'Harry', 'Age': 17}]
second
[{'Name': 'Harry', 'Age': 15}]
預期結果:
dict_keys(['first', 'second'])
first
[]
second
[]
我很困惑,為什么這不起作用?
uj5u.com熱心網友回復:
對于預期的結果,您可以使用 copy() 方法復制串列并保持原始串列不變,如下所示:
data_remove_from = test[key].copy()
- 完整代碼:
test = {"first": [{"Name": "Harry", "Age": 18}, {"Name": "Harry", "Age": 17},
{"Name": "Harry", "Age": 19}],
"second": [{"Name": "Harry", "Age": 20}, {"Name": "Harry", "Age": 15},
{"Name": "Harry", "Age": 11}]}
print(test.keys())
print(test.keys())
for key in test.keys():
print(key)
data = test[key]
data_remove_from = test[key].copy()
for dict_test in data:
data_remove_from.remove(dict_test)
print(data_remove_from)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495784.html
上一篇:在一列串列中附加缺失的專案
