gpt4 book ai didi

python - 我如何在可能出现嵌套字典或列表的地方使用字典理解

转载 作者:行者123 更新时间:2023-12-05 08:36:26 25 4
gpt4 key购买 nike

如何对文字列表的值使用字典理解

现在我可以遍历嵌套字典并得到带有嵌套值的结果字典,但我想在输出中包含 dict、列表和文字 (int,海峡)

这是我的例子(我知道这里不需要isinstance)

nested_dict = {'first':{'a':1}, 'second':{'b':2}, 'third': 3, 'fourth': [1, 2, 3, 4]}

float_dict = {
outer_k: { float(inner_v)
for (inner_k, inner_v) in outer_v.items()}
for (outer_k, outer_v) in nested_dict.items()
if isinstance(outer_v, dict)
}

print(float_dict)

预期输出:

{'first': {'a': 1.0}, 'second': {'b': 2.0}, 'third': 3.0, 'fourth': [1.0, 2.0, 3.0, 4.0]}

最佳答案

(合理地)不可能使用单一推导式,您需要这样的递归函数:

def floatify(v):
if isinstance(v, list):
return list(map(floatify, v))
if isinstance(v, dict):
return {k: floatify(_v) for k, _v in v.items()}
return float(v)
>>> floatify(nested_dict)
{'first': {'a': 1.0}, 'second': {'b': 2.0}, 'third': 3.0, 'fourth': [1.0, 2.0, 3.0, 4.0]}

请注意,您可以使此函数更加通用:

def anyify(v, f):
if isinstance(v, list):
return [anyify(_v, f) for _v in v]
if isinstance(v, dict):
return {k: anyify(_v, f) for k, _v in v.items()}
return f(v)

anyify(nested_dict, float)

关于python - 我如何在可能出现嵌套字典或列表的地方使用字典理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69191250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com