python中字典回调循环处理字典中值为None或特定值替换为其它值的方法。

#清除值为空的键值对,但保留值为0的
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 or v == 0)]
    return {k: v for k, v in ((k, clean_empty(v)) for k, v in d.items()) if (v or v == 0)}

#将NoneType替换为其它字符(保留了key),如'v'
def replace_empty(d):
    if not isinstance(d, (dict, list)):
        return d
    if isinstance(d, list):
        return [v if (v or v == 0) else 'v' for v in (replace_empty(v) for v in d)]
    return {k: (v if (v or v == 0) else 'v') for k, v in ((k, replace_empty(v)) for k, v in d.items())}

a = None
b = {0:{5:54}, 1:545,2:{11:a, 5:5},3:{565:{'ss':a,'sss':{4:{5:a}}}},4:a}
#print(clean_empty(b))
print(replace_empty(b))

结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值