如果键或值中的字符串匹配,则删除字典中的键和值

时间:2019-10-14 09:37:50

标签: python-3.x

我将得到一个包含子字典和key:val对的字典。

例如:

  

dict = {“ 1”:“一个”,“ 2”:“两个”,“ 3”:{“一个”:“ 1”,“两个”:“ 2”}}

这个字典不是固定的,我会随机得到它,它包含多个键:val对和一些子字典。

我的要求是遍历所有键,值并删除键,val对(如果我在该特定子命令中在其中找到一个字符串)。

2 个答案:

答案 0 :(得分:0)

a = {"1": {"a": "a"}, "2": "a", "3": {"p": "pi", "t": "ti"}}
print(a)
for el in a:
    if type(a[el]) is dict:
        for inner_el in a[el]:
            print(a[el])
            if a[el][inner_el] == "ti":
                del(a[el][inner_el])
                break
print(a)

输出

{'1': {'a': 'a'}, '2': 'a', '3': {'p': 'pi', 't': 'ti'}}
{'a': 'a'}
{'p': 'pi', 't': 'ti'}
{'p': 'pi', 't': 'ti'}
{'1': {'a': 'a'}, '2': 'a', '3': {'p': 'pi'}}

这仅在有一个键要删除时有效

答案 1 :(得分:0)

def delete_key(dict_obj):

    for key, val in dict_obj.items():

        if type(val) == 'dict':
            delete_key(val)

        if type(val) == 'str':
            print(key + ' - > ' + val)
            # Below line will delete you key
            del dict_obj[val]
            # DO YOUR VERIFICATION LOGIC HERE 
            # AND DELETE KEY

使用上述方法删除密钥。根据您的要求微调此方法。