如何使用字典推导式处理包含嵌套dict、list或literals类型的值
你现有的代码只保留了外层值为字典的项,所以丢失了数值、列表类型的结果。只需要把外层推导的过滤条件替换成类型判断的三元分支,即可覆盖所有场景:
nested_dict = {'first':{'a':1}, 'second':{'b':2}, 'third': 3, 'fourth': [1, 2, 3, 4]} float_dict = { outer_k: ( {inner_k: float(inner_v) for inner_k, inner_v in outer_v.items()} if isinstance(outer_v, dict) else [float(item) for item in outer_v] if isinstance(outer_v, list) else float(outer_v) ) for outer_k, outer_v in nested_dict.items() } print(float_dict)
运行输出和你预期的完全一致:
{'first': {'a': 1.0}, 'second': {'b': 2.0}, 'third': 3.0, 'fourth': [1.0, 2.0, 3.0, 4.0]}
如果要处理更深层的嵌套(比如列表里套字典、字典里套列表这类情况),可以把类型转换的逻辑封装成递归函数,再放到字典推导里调用即可。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

