根据某些条件从字典的python字典中删除键

时间:2020-11-11 11:05:11

标签: python dictionary

如何根据某些条件从python词典的字典中删除键?

示例字典:

a = { 
  'k': 'abc',
  'r': 20,
  'c': { 
         'd': 'pppq',
         'e': 22,
         'g': 75
  },
  'f': ''}

我想删除所有值为字符串类型的条目。它可以包含任何键的字典。嵌套键值对也应处理。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

a = {
    'k': 'abc',
    'r': 20,
    'c': {
        'd': 'pppq',
        'e': 22,
        'g': 75
    },
    'f': ''}


def remove_string_values(d):
    result = {}
    for k, v in d.items():
        if not isinstance(v, str):
            result[k] = remove_string_values(v) if isinstance(v, dict) else v
    return result


res = remove_string_values(a)
print(res)

输出

{'r': 20, 'c': {'e': 22, 'g': 75}}

答案 1 :(得分:0)

类似的事情应该起作用:

def remove_strings(a):
    no_strings = {}

    for k,v in a.items():
        if type(x) is str:
            continue
        elif type(x) is dict:
            no_strings[k] = remove_strings(v)
        else:
            no_strings[k] = v

此函数是递归的-它调用自身以处理嵌套字典。

应该可以就地删除键(而无需复制字典),但是那样的话,代码的可读性就会降低。