栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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}}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号