繁体   English   中英

如何检查嵌套字典中是否存在键,如果是,则删除

[英]How to check whether a key exist inside a nested dictionary and if yes delete

我已经创建了这个main_dict ,想要查看main_dict[x]["Description"]存在,如果是,则将其删除。 其中x'pins''nails''board'等...

main_dict = {
'pins':
    {
        'Category': ['General'],
        'Contact': ['Mark'],
        'Description': ['This', 'is', 'a']
    },
'nails':
    {
        'Category': ['specific'],
        'Contact': ['Jon'],
        'Description': ['This', 'is', 'a', 'description']
    },
'board':
    {
        'Category': ['General'],
        'Contact': ['Mark'],
        'Description': ['This', 'is', 'a']
    },
'hammer':
    {
        'Category': ['tools'],
        'Contact': ['Jon'],
        'Description': ['This', 'is', 'a', 'description']
    }
}

我尝试了这个:

for x in main_dict:
   del main_dict[x]["Description"]

如果main_dict[x]["Description"]不存在,则返回错误。

同样这不起作用:

if main_dict[x]["Description"] in mainDict[x]:
     del main_dict[x]["Description"]

您只需使用带有默认参数(例如None )的pop()方法来忽略检查是否存在"Description"作为键。

for i in main_dict:
    main_dict[i].pop("Description", None)

注意:在迭代过程中更改可迭代对象不是一个好习惯。

这是一个简单的解决方案:

for x in main_dict:
    if "Description" in main_dict[x]:
        main_dict[x].pop("Description")

要检查字典中if key in dict请尝试if key in dict来检查嵌套字典是否遵循相同的逻辑:

for key in main_dict:
    if 'Description' in main_dict[key]:
        # do something

关于删除元素,您确实应该使用del语句 我复制了您的main_dict,并以与您相同的方式运行:

for x in main_dict: 
    del main_dict[x]['Description']

也许您要删除两次?

这会将其从包含它的所有子词典中删除:

main_dict = {
    'pins':
        {
            'Category': ['General'],
            'Contact': ['Mark'],
            'Description': ['This', 'is', 'a']
        },
    'nails':
        {
            'Category': ['specific'],
            'Contact': ['Jon'],
            'Description': ['This', 'is', 'a', 'description']
        },
    'board':
        {
            'Category': ['General'],
            'Contact': ['Mark'],
            'Description': ['This', 'is', 'a']
        },
    'hammer':
        {
            'Category': ['tools'],
            'Contact': ['Jon'],
            'Description': ['This', 'is', 'a', 'description']
        }
}

for key, value in main_dict.items():
    if isinstance(value, dict) and 'Description' in value:
        del value['Description']

结果:

{
    'pins':
        {
            'Category': ['General'],
            'Contact': ['Mark'],
        },
    'nails':
        {
            'Category': ['specific'],
            'Contact': ['Jon'],
        },
    'board':
        {
            'Category': ['General'],
            'Contact': ['Mark'],
        },
    'hammer':
        {
            'Category': ['tools'],
            'Contact': ['Jon'],
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM