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

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

Stack Overflow用户
提问于 2022-12-01 00:16:57
回答 2查看 32关注 0票数 0

如何使用python从JSON文件中删除重复条目?

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

感激一些人可以帮助提供一个解决方案来修复它。

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

我想从列表中删除重复条目,预期结果如下:

感谢您可以帮助提供一个解决方案来修复它。

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

回答 2

Stack Overflow用户

发布于 2022-12-01 00:32:30

下面的方法能解决你的问题吗?

代码语言:javascript
复制
new_list=[]
for i in json_data:
    if not i in new_list:
        new_list.append(i)
print(new_list)
票数 0
EN

Stack Overflow用户

发布于 2022-12-01 01:57:01

尽管OP要求使用Python来完成这一任务,但在jq中可以很容易地使用函数unique完成这一任务,只需一个更新分配:

代码语言:javascript
复制
$ jq '.[].permissions[].collections |= unique' json.txt 
[
  {
    "authType": "ldap",
    "password": "",
    "permissions": [
      {
        "collections": [
          "aks9098",
          "aks9099",
          "aks9100",
          "aks9101",
          "aks9102",
          "aks9103"
        ],
        "project": "Central Project"
      }
    ],
    "role": "devSecOps",
    "username": "chinq.n@example.com"
  },
  {
    "authType": "ldap",
    "password": "",
    "permissions": [
      {
        "collections": [
          "aks9098",
          "aks9099",
          "aks9100",
          "aks9101",
          "aks9102",
          "aks9103"
        ],
        "project": "Central Project"
      }
    ],
    "role": "devSecOps",
    "username": "chinw.d@example.com"
  },
  {
    "authType": "ldap",
    "password": "",
    "permissions": [
      {
        "collections": [
          "aks9098",
          "aks9099",
          "aks9100",
          "aks9101",
          "aks9102",
          "aks9103"
        ],
        "project": "Central Project"
      }
    ],
    "role": "devSecOps",
    "username": "chins.b@example.com"
  }
]

要在Python中调用它,可以这样做:

代码语言:javascript
复制
import subprocess
return_obj = subprocess.run(["jq", ".[].permissions[].collections |= unique","json.txt"], stdout=subprocess.PIPE)
json_data = return_obj.stdout.decode()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74635590

复制
相关文章

相似问题

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