如何根据键值过滤 python 中的嵌套字典:
d = {'data': {'country': 'US', 'city': 'New York', 'state': None},
'tags': ['US', 'New York'],
'type': 'country_info',
'growth_rate': None
}
我想过滤这个字典以消除 NoneType 值,因此生成的字典应该是:
d = {'data': {'country': 'US', 'city': 'New York'},
'tags': ['US', 'New York'],
'type': 'country_info',
}
此外,字典可以有多层嵌套。我想从字典中删除所有 NoneType 值。
您可以使用以下方法轻松递归地定义它:听写理解 https://www.youtube.com/watch?v=t85uBptTDYY.
def remove_keys_with_none_values(item):
if not hasattr(item, 'items'):
return item
else:
return {key: remove_keys_with_none_values(value) for key, value in item.items() if value is not None}
递归在 Python 中并没有太优化,但考虑到可能的嵌套数量相对较少,我不会担心。
在我们跳跃之前查看并不是太 Pythonic,我认为这是比捕获异常更好的选择 - 因为该值很可能不会是dict
大多数时候(很可能我们的叶子比树枝多)。
另请注意,在 Python 2.x 中,您可能想要交换iteritems()
for items()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)