首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python从json文件中删除一些条目?

如何使用python从json文件中删除一些条目?
EN

Stack Overflow用户
提问于 2022-11-29 08:56:34
回答 1查看 32关注 0票数 0

如何使用python从JSON文件中删除一些条目?

我有一个JSON文件,如下所示:

代码语言:javascript
复制
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"
    }
]

我想从列表中删除aks9098aks9099aks9103。预期结果应该如下所示:

代码语言:javascript
复制
[
    {
        "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"
    }
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-29 11:13:35

您可以递归地分析输入数据并删除所有禁止的值:

代码语言:javascript
复制
def filter_data(data, forbidden_values):
    if isinstance(data, str):
        return data
    if isinstance(data, dict):
        return {
            key: filter_data(value, forbidden_values) for key, value in data.items()
        }
    if isinstance(data, list):
        return [
            filter_data(value, forbidden_values)
            for value in data
            if value not in forbidden_values
        ]


forbidden_values = ["aks9098", "aks9099", "aks9103"]
filtered_data = filter_data(json_data, forbidden_values)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74611405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档