Python:如何删除嵌套字典中的所有空字段

Python:如何删除嵌套字典中的所有空字段,第1张

Python:如何删除嵌套字典中的所有空字段

使用一个返回新字典的递归函数:

def clean_empty(d):    if not isinstance(d, (dict, list)):        return d    if isinstance(d, list):        return [v for v in (clean_empty(v) for v in d) if v]    return {k: v for k, v in ((k, clean_empty(v)) for k, v in d.items()) if v}

{..}
构建体是字典解析; 如果
v
true ,则仅包含原始字典中的键,例如不为空。同样,该
[..]
构造会建立一个列表。

嵌套

(.. for ..)
构造是生成器表达式,允许表达式 递归 紧凑地过滤空对象。

请注意,任何设置为 数字0 (整数0,浮点数0.0)的值也将被清除。您可以使用保留数字0值

if v or v == 0

演示:

>>> sample = {...     "fruit": [...         {"apple": 1},...         {"banana": None}...     ],...     "veg": [],...     "result": {...         "apple": 1,...         "banana": None...     }... }>>> def clean_empty(d):...     if not isinstance(d, (dict, list)):...         return d...     if isinstance(d, list):...         return [v for v in (clean_empty(v) for v in d) if v]...     return {k: v for k, v in ((k, clean_empty(v)) for k, v in d.items()) if v}... >>> clean_empty(sample){'fruit': [{'apple': 1}], 'result': {'apple': 1}}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5631023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存