我有一个有很多值的字典,其中一些是子字典,也有子字典等等。对于每个值,我需要构建一个字符串,将顶级键与一个点连接起来。例如,如果我的 dict 是{'a': 1, 'b': {'c': 2, 'd': 3, 'e': {'f': 4}}},我需要构建以下字符串:ab.cb.db.e.f为此,我编写了以下代码from types import GeneratorTypedef get_parameter(d, top_level_param): for k, v in d.items(): parameter = top_level_param + '.' + k if isinstance(v, dict): get_parameter(v, parameter) else: yield parameterd = {'a': 1, 'b': {'c': 2, 'd': 3, 'e': {'f': 4}}}for k, v in d.items(): if isinstance(v, dict): parameter = get_parameter(v, k) else: parameter = k if isinstance(parameter, GeneratorType): for p in parameter: print(p) else: print(parameter)但是,输出丢失b.e.f,我不知道为什么。在纸面上,它看起来应该由 返回get_parameter()。
1 回答

12345678_0001
TA贡献1802条经验 获得超5个赞
get_parameter递归调用自身,但不对结果做任何事情。相反,您也想产生这些结果,您可以使用以下yield from语句:
def get_parameter(d, top_level_param):
for k, v in d.items():
parameter = top_level_param + '.' + k
if isinstance(v, dict):
yield from get_parameter(v, parameter)
else:
yield parameter
添加回答
举报
0/150
提交
取消