当前位置: 代码迷 >> python >> 过滤嵌套的字典
  详细解决方案

过滤嵌套的字典

热度:27   发布时间:2023-07-16 11:09:17.0

我有一个如下所示的 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.")

您的代码有两个问题。

第一个是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]

也作为另一个优化。 您可以在将内容分配给数据后关闭文件,因为您不再使用它。 老实说,这只会在文件内容相当大时产生影响,因为它会释放内存以供使用。

  相关解决方案