You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python删除JSON文件中的指定条目

移除JSON集合中指定元素的实现方法

问题背景

我有以下以Python变量形式存储的JSON数据:

json_data = [
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9099",
                    "aks9098",
                    "aks9100",
                    "aks9101",
                    "aks9102",
                    "aks9103"
                    
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chinq.n@example.com"
    },
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9099",
                    "aks9098",
                    "aks9100",
                    "aks9101",
                    "aks9102",
                    "aks9103"
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chinw.d@example.com"
    },
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9099",
                    "aks9098",
                    "aks9100",
                    "aks9101",
                    "aks9102",
                    "aks9103"
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chins.b@example.com"
    },
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9099",
                    "aks9098",
                    "aks9100",
                    "aks9101",
                    "aks9102",
                    "aks9103"
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chini.a@example.com"
    }
]

需求是从每个用户条目下permissions中的collections列表里移除aks9098、aks9099和aks9103,最终得到如下结果:

[
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9100",
                    "aks9101",
                    "aks9102"                    
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chinq.n@example.com"
    },
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9100",
                    "aks9101",
                    "aks9102"
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chinw.d@example.com"
    },
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9100",
                    "aks9101",
                    "aks9102"
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chins.b@example.com"
    },
    {
        "authType": "ldap",
        "password": "",
        "permissions": [
            {
                "collections": [
                    "aks9100",
                    "aks9101",
                    "aks9102"            
                ],
                "project": "Central Project"
            }
        ],
        "role": "devSecOps",
        "username": "chini.a@example.com"
    }
]

解决代码

可以通过Python的列表推导式遍历过滤元素,实现需求:

# 定义需要移除的元素集合(用集合提升查找效率)
remove_collections = {"aks9098", "aks9099", "aks9103"}

# 遍历每个用户条目
for user_entry in json_data:
    # 遍历用户的权限配置
    for permission in user_entry["permissions"]:
        # 过滤保留需要的集合元素
        permission["collections"] = [
            col for col in permission["collections"] 
            if col not in remove_collections
        ]

运行这段代码后,json_data就会变成期望的格式。如果需要将结果保存为JSON文件,可以添加以下代码:

import json

with open("processed_users.json", "w") as f:
    json.dump(json_data, f, indent=4)

内容的提问来源于stack exchange,提问作者chin wooi Ng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:40:26