问题描述
我有一个如下所示的 Python 脚本(如下),但我无法弄清楚如何过滤字典中的字典。
我希望它在有对象属性'type': 'data'
,然后对象本身将被删除。
如果有帮助,我正在尝试从过滤掉languages.yml
。
import json
file = open('languages.json', 'r')
data = json.load(file)
print(data)
for language in data:
if data[language]['type'] == 'data':
del language
file.close()
print(data)
file2 = open('langs.json', 'w')
file2.write(json.dumps(data))
file2.close()
print("Finished.")
1楼
您的代码有两个问题。
第一个是del language
是键值,但不是字典中对它的引用。
因此,您需要将其更改为del data[language]
以实际删除字典中的键和值。
第二个是您根据字典的大小进行循环。
通过for language in data.keys()
执行for language in data.keys()
来更改for language in data
以遍历键,这将处理字典调整大小的问题。
最终代码:
for language in data.keys():
if data[language]['type'] == 'data':
del data[language]
也作为另一个优化。 您可以在将内容分配给数据后关闭文件,因为您不再使用它。 老实说,这只会在文件内容相当大时产生影响,因为它会释放内存以供使用。