为了账号安全,请及时绑定邮箱和手机立即绑定

Python 从 json 字典中删除不起作用

Python 从 json 字典中删除不起作用

慕森卡 2023-07-27 17:53:47
当我调用此函数从 json 导入的字典中删除项目时,它不起作用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 中字典的设置方式{"keys": [    {"key": 1599853953652, "role": "MODERATOR", "Server": 753230650181550141, "uses": 1, "maxuses": 0}    ]}
查看完整描述

4 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

看起来您实际上想删除字典列表中的任何字典,"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


查看完整回答
反对 回复 2023-07-27
?
跃然一笑

TA贡献1826条经验 获得超6个赞

删除“角色” - 一个班轮演示


data = {"keys": [

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

    ]

}


data['keys'][0].pop('role',None)

print(data)

输出


{'keys': [{'key': 1599853953652, 'Server': 753230650181550141, 'uses': 1, 'maxuses': 0}]}



查看完整回答
反对 回复 2023-07-27
?
ibeautiful

TA贡献1993条经验 获得超5个赞

使用del d仅删除变量d,但不会影响要从中删除的列表。您需要对列表本身进行操作。我会使用该pop()方法,尽管del也可以。


def removeKey(key):

    with open ("keys.json") as f:

        data = json.loads(f.read())

        for i, d in enumerate(data["keys"]):

            if d["key"] == key:

                data["keys"].pop(i)


    print(data)


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

        json.dump(data, f)


查看完整回答
反对 回复 2023-07-27
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

for d in data["keys"]:

    if(d["key"] == key):

        del d

del删除名字。删除名称不会删除关联的值,除非它是该值的唯一名称。


该for d in ...循环创建为 的d附加名称data["keys"]["key"]。当您删除时del d,您只是删除了名称,而没有d删除其中的值。data


这相当于:


x = 1

y = x

del y

运行此代码后,x仍然存在。 del y刚刚删除了名字 y。


换句话说,想象一下贴在盒子上的便利贴。便利贴是名称,方框是值。一个盒子上可以贴有许多便条,移除一张便条并不会破坏盒子(除非它是唯一的便条)。


查看完整回答
反对 回复 2023-07-27
  • 4 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信