使用字典理解递归地将值转换为字符串
使用字典理解是否可以将所有值递归转换为字符串?
我有这本词典
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+(因为使用了赋值表达式)。