python - 从 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}
]
}
解决方案
"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
推荐阅读
- java - 如何翻转javafx滑块的轴
- robotframework - 在 robots/RIDE 中使用 jython 从 output.xml 重新运行失败的测试用例
- javascript - window.onload 在 IE 8、9 加载动态脚本之前执行
- html - 如何使用 this.sanitizer.bypassSecurityTrustStyle 作为背景色
- scala - 在调整大小之前,传单地图无法正确显示
- python - 如何从其他机器访问服务器(在 docker 容器中运行)?
- angular - cdk-virtual-scroll-viewport 使用 angular/flex-layout (row and wrap)
- c# - 附加属性在 xamarin 表单中的标签可见性中没有绑定
- c# - 如何在运行时销毁多个游戏对象?
- django - 查询api中的django动态模型对象