我有以下帶有嵌套 dict 的字典。如果鍵(物件名稱)中有蘋果,我想洗掉嵌套字典,否則保留它。
輸入
{
"item": [
{
"seq_key": [
{
"height": 153,
"object-name": "person:1"
},
{
"height": 107,
"object-name": "apple:1"
},
{
"height": 90,
"object-name": "orange:2"
},
{
"height": 84,
"object-name": "apple:3"
},
{
"height": 94,
"object-name": "apple:4"
}
],
"f-no": "0"
},
{
"seq_key": [
{
"height": 161,
"object-name": "person:1"
},
{
"height": 84,
"object-name": "mango:3"
}
],
"f-no": "1"
}
]
}
我的預期輸出
{
"item": [
{
"seq_key": [
{
"height": 153,
"object-name": "person:1"
},
{
"height": 90,
"object-name": "orange:2"
}
],
"f-no": "0"
},
{
"seq_key": [
{
"height": 161,
"object-name": "person:1"
},
{
"height": 84,
"object-name": "mango:3"
}
],
"f-no": "1"
}
]
}
我試過的
import json
with open(r"my_file.json", encoding='utf-8') as f:
abc = json.load(f)
for key,value in abc.items():
for i in value:
for n,item in enumerate(i.get('seq_key')):
if item.get('object-name').split(":")[0] == 'apple':
item.clear()
上面的代碼給出了空字典,我不知道如何從串列中洗掉。如果我嘗試使用串列洗掉方法,則僅洗掉兩個專案而不是全部。
誰能幫我,如何洗掉它?
uj5u.com熱心網友回復:
您可以使用串列理解來創建一個包含您感興趣的元素的新串列,而不是嘗試洗掉串列元素:
for seq in abc["item"]:
seq["seq_key"] = [d for d in seq["seq_key"] if "apple" not in d["object-name"]]
uj5u.com熱心網友回復:
我認為您的代碼大部分是正確的,除了clear您可以pop將專案從串列中洗掉而不是嘗試該專案-
for key,value in abc.items():
for i in value:
for n,item in enumerate(i.get('seq_key')):
if item.get('object-name').split(":")[0] == 'apple':
i.get('seq_key').pop(n)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/353562.html
上一篇:從字串中提取名稱
下一篇:如何根據條件替換熊貓列中的字串?
