为了账号安全,请及时绑定邮箱和手机立即绑定

如何用空字典替换“None”作为字典值?

如何用空字典替换“None”作为字典值?

手掌心 2023-07-18 15:25:26
我正在解析一个复杂的 json 字符串,并在我的类中使用嵌套字典和一些嵌套 dic.get() 函数。当更高级别的密钥不存在时,我不想接收 None ,而是想找到一个空字典,以便我的代码(dict.get())继续工作。现在我想用空字典 {} 替换所有名为 None 的字典值,但我没有找到任何好的解决方案。所以基本上我想要这个:{'a': {}, 'b': 'Text', 'c': 5, 'd': {'d1': {}}但遗憾的是:{'a': None, 'b': 'Text', 'c': 5, 'd': {'d1': None}
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

其他解决方案是递归遍历字典并替换None值:


def replace(d):

    if isinstance(d, dict):

        for k in d:

            if d[k] is None:

                d[k] = {}

            else:

                replace(d[k])

    elif isinstance(d, list):

        for v in d:

            replace(v)



d = {'a': None,

     'b': 'Text',

     'c': 5,

     'd': {'d1': None}}


replace(d)

print(d)

印刷:


{'a': {}, 'b': 'Text', 'c': 5, 'd': {'d1': {}}}


查看完整回答
反对 回复 2023-07-18
?
白板的微信

TA贡献1883条经验 获得超3个赞

get您可以使用该方法的默认值


dict.get("a", {})

样本:


d = { 'b' : 1,

       'c' : { 'd': 2 } }

print (d.get('a', {}))

print (d.get('c', {}).get('a', {}))

print (d.get('x', {}).get('y', {}).get('z', {}))

输出:


{}

{}

{}


查看完整回答
反对 回复 2023-07-18
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信