如何根据某些条件从python词典的字典中删除键?
示例字典:
a = {
'k': 'abc',
'r': 20,
'c': {
'd': 'pppq',
'e': 22,
'g': 75
},
'f': ''}
我想删除所有值为字符串类型的条目。它可以包含任何键的字典。嵌套键值对也应处理。
答案 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
此函数是递归的-它调用自身以处理嵌套字典。
应该可以就地删除键(而无需复制字典),但是那样的话,代码的可读性就会降低。