为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这段代码没有遍历所有 dict 的元素?

为什么这段代码没有遍历所有 dict 的元素?

Smart猫小萌 2021-08-11 17:24:12
我有一个有很多值的字典,其中一些是子字典,也有子字典等等。对于每个值,我需要构建一个字符串,将顶级键与一个点连接起来。例如,如果我的 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


查看完整回答
反对 回复 2021-08-11
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号