如果json对象出现在另一个json文件中,Python会从一个json文件中减去它们

2024-06-11 16:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如果对象包含与另一个json文件匹配的key:value对,我希望能够从一个json文件中删除对象

文件1:

[
  {
    "Admin": "aaa",
    "id": "111",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example1"
  },
  {
    "Admin": "aaa",
    "id": "222",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example2"
  },
  {
    "Admin": "aaa",
    "id": "333",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example3"
  },
  {
    "Admin": "aaa",
    "id": "444",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example4"
  },
]

文件2:

[
 [
  {
   "vmName": "example1"
  }
 ],
 [
  {
   "vmName": "example2"
  }
 ],
 [
  {
   "vmName": "example3"
  }
 ],
]

文件3(或修改后的文件1)中的所需结果:

[
  {
    "Admin": "aaa",
    "id": "444",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example4"
  },
]

我已经找到了一些从第一个文件中删除元素的方法,但是我想删除整个对象,因为如果它的k:v与file2中的任意k:v匹配,我不知道有什么方法可以做到这一点


Tags: 文件对象idjsonadminwindowsexample1bbb
1条回答
网友
1楼 · 发布于 2024-06-11 16:29:17

解决方案:

def return_non_repetitive_records(file1, file2):
    result = file1.copy()
    for i in range(len(file2)):
        for j in range(len(result)):
            if result[j]['vmName'] == file2[i][0]['vmName']:
                result.pop(j)
                break
    return result

用法:

file3 = return_non_repetitive_records(file1, file2)

结果:

[{'Admin': 'aaa',
  'id': '444',
  'osType': 'Windows',
  'publicIps': [],
  'resourceGroup': 'bbb',
  'vmName': 'example4'}]

您提供的数据:

file1 = [
  {
    "Admin": "aaa",
    "id": "111",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example1"
  },
  {
    "Admin": "aaa",
    "id": "222",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example2"
  },
  {
    "Admin": "aaa",
    "id": "333",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example3"
  },
  {
    "Admin": "aaa",
    "id": "444",
    "osType": "Windows",
    "publicIps": [],
    "resourceGroup": "bbb",
    "vmName": "example4"
  },
]


file2 = [
 [
  {
   "vmName": "example1"
  }
 ],
 [
  {
   "vmName": "example2"
  }
 ],
 [
  {
   "vmName": "example3"
  }
 ],
]

相关问题 更多 >