[英]Filter json value based on array
我有一個 json 如下所示
[
{
"ename": "mark",
"id": "1",
"url": "Lennon.com"
},
{
"ename": "egg",
"id": "2",
"url": "egg.com"
},
{
"ename": "love",
"id": "3",
"url": "love.com"
}
]
我也有這樣的數組 ["1", "2"]
我需要根據我的數組過濾掉數組值,所以最終輸出應該是
[
{
"ename": "love",
"id": "3",
"url": "love.com"
}
]
這是我現在的代碼:
obj = json.load(open("package.json"))
remove_id = ["1","2"]
# Iterate through the objects in the JSON and pop (remove)
# the obj once we find it.
for x in remove_id:
print x
for i in xrange(len(obj)):
if obj[i]["id"] == x:
obj.pop(i)
break
# Output the updated file with pretty JSON
open("updated-file-3.json", "w").write(
json.dumps(obj, sort_keys=True, indent=4, separators=(',', ': '))
)
它不工作; 你能幫忙嗎
首先,它看起來remove_id
是一個int
list
,但id
鍵是一個str
所以即使它匹配它也不會通過相等性測試。 話雖如此,無需修改原始 object,您可以使用列表理解創建副本。
[o for o in obj if int(o["id"]) not in remove_id]
>> [{'ename': 'love', 'id': '3', 'url': 'love.com'}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.