[英]Remove element from list inside a dict Python
你好,我有一個這樣的字典:
{
"a":{
"a1":val,
"a2":val
},
"b":{
"b1":[
{
"measure":{
"k":"v",
"k1":"v"
},
"ts":"2020-10-12T12:12:12"
},
{
"measure":{
"k":"v",
"k1":"v"
},
"ts":"2020-10-12T12:12:12"
},
]
}
}
我需要從字典列表中刪除一些字典 dict["b"]["b1"]
所以我想象我的代碼是這樣的:
def epc_avionics_treatment(self,dict_data):
i=0
for epc1 in dict_data["b"]["b1"]:
if (epc1["ts"]=="200-00-00T00:00:00Z"):
del dict_data["b"]["b1"][i]
i=i+1
if (len(dict_data["b"]["b1"])==0):
del dict_data["b"]["b1"]
return dict_data
然而,即使“ts”鍵等於我的刪除標准,列表中的元素也不會被刪除,我也嘗試將 dict["b"]["b1"] 分配給 vars,但它沒有影響。
這是因為當您刪除元素時,您不需要增加索引變量。
工作示例:
def epc_avionics_treatment(dict_data):
i=0
while i<len(dict_data["b"]["b1"]):
if (dict_data["b"]["b1"][i]["ts"]=="200-00-00T00:00:00Z"):
del dict_data["b"]["b1"][i]
i-=1
i=i+1
if (len(dict_data["b"]["b1"])==0):
del dict_data["b"]["b1"]
return dict_data
您的代碼遇到邏輯錯誤。 當您通過以下命令刪除節點時
del dict_data["b"]["b1"][i]
然后增加 i,你會出錯,因為你正在跳過另一個節點。 我將在下面解釋它:
items = [a1,a2,a3,a4,a5]
i=3 // So items[2] : a3
// lets delete items[i]
del items[i] // a3 has been removed.
// now , items[i] is a4 ( i have not increased i yet ), so what happen if i increase the i ?
i = i + 1 // now items[i] is a5 and i have skipped a4
//if i delete items[i], a5 would be removed and not a4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.