首页 > 解决方案 > 从 json dict 中删除的 Python 不起作用

问题描述

当我调用此函数从从 json 导入的 dict 中删除项目时,它不起作用

def removeKey(key):
    with open ("keys.json") as f:
        data  = json.loads(f.read())
        for d in data["keys"]:
            if(d["key"] == key):
                del d

    print(data)

    with open ("keys.json", "w") as f:
        json.dump(data, f)

这就是在 JSON 中设置 dict 的方式

{"keys": [
    {"key": 1599853953652, "role": "MODERATOR", "Server": 753230650181550141, "uses": 1, "maxuses": 0}
    ]
}

标签: pythonjson

解决方案


"keys"如果条目的值"key"与某个数字匹配(例如1599853953652),您似乎实际上想要删除字典列表中的任何字典。

假设是这种情况,最干净的方法实际上是创建一个新列表来过滤掉不需要的条目;您不能del在迭代时简单地调用以删除元素。

data = json.loads(f.read())
filtered_keys = [d for d in data["keys"] if d["key"] != key]
data["keys"] = filtered_keys

推荐阅读