使用字典理解递归地将值转换为字符串

使用字典理解是否可以将所有值递归转换为字符串?

我有这本词典

d = {
  "root": {
    "a": "1",
    "b": 2,
    "c": 3,
    "d": 4
  }
}

我试过

{k: str(v) for k, v in d.items()}

但是上面的代码将整个root值转换为字符串,我想要这个:

d = {"root": {"a": "1", "b": "2", "c": "3", "d": "4"}}

回答

这不是字典理解,但它有效,它只是一行,而且是递归的!

(f := lambda d: {k: f(v) for k, v in d.items()} if type(d) == dict else str(d))(d)

不过它只适用于 Python 3.8+(因为使用了赋值表达式)。


以上是使用字典理解递归地将值转换为字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>