教程 > python 3 教程 > 阅读:790

python 从列表中删除 json 对象——迹忆客-ag捕鱼王app官网

要从列表中删除 json 对象:

  1. 将 json 对象解析为 python 字典列表。
  2. 使用 enumerate() 函数对列表进行迭代。
  3. 检查每个字典是否是您要删除的字典,并使用 pop() 方法删除匹配的字典。
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
    my_list = json.load(f)
    # [{'id': 1, 'name': 'alice'}, {'id': 2, 'name': 'bob'}, {'id': 3, 'name': 'carl'}]
    print(my_list)
    for idx, obj in enumerate(my_list):
        if obj['id'] == 2:
            my_list.pop(idx)
new_file_name = 'new-file.json'
with open(new_file_name, 'w', encoding='utf-8') as f:
    f.write(json.dumps(my_list, indent=2))

该示例显示如何从文件中的对象数组中删除 json 对象。

我们可以使用相同的方法从文件外的对象数组中删除 json 对象。

import json
my_json = '[{"id": 1, "name": "alice"}, {"id": 2, "name": "bob"}]'
my_list = json.loads(my_json)
for idx, dictionary in enumerate(my_list):
    if dictionary['id'] == 2:
        my_list.pop(idx)
# [{'id': 1, 'name': 'alice'}]
print(my_list)
json_again = json.dumps(my_list)
print(json_again) #  '[{"id": 1, "name": "alice"}]'

如果我们的 json 位于文件中,请使用 json.load() 方法解析 json。

json.load 方法用于将文件反序列化为 python 对象,而 json.loads 方法用于将 json 字符串反序列化为 python 对象。

下一步是遍历列表并检查每个字典中的键是否具有特定值。

import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
    my_list = json.load(f)
    # [{'id': 1, 'name': 'alice'}, {'id': 2, 'name': 'bob'}, {'id': 3, 'name': 'carl'}]
    print(my_list)
    for idx, obj in enumerate(my_list):
        if obj['id'] == 2:
            my_list.pop(idx)
new_file_name = 'new-file.json'
with open(new_file_name, 'w', encoding='utf-8') as f:
    f.write(json.dumps(my_list, indent=2))

一旦找到匹配的字典,我们必须使用 list.pop() 方法将其从列表中删除。

list.pop 方法删除列表中给定位置的项目并将其返回。

如果我们只想从列表中删除 1 个字典,也可以添加一个 break 语句。

for idx, obj in enumerate(my_list):
        if obj['id'] == 2:
            my_list.pop(idx)
            break

如果字典位于列表的开头,这可以为我们节省一些不必要的迭代时间。

最后一步是在示例中打开一个新文件(new-file.json),将列表序列化为 json 并写入文件。

new_file_name = 'new-file.json'
with open(new_file_name, 'w', encoding='utf-8') as f:
    f.write(json.dumps(my_list, indent=2))

查看笔记

扫码一下
查看教程更方便
网站地图