Python3我们可以用for循环来迭代dict的dict吗?

2024-09-25 14:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套dict和键值的dict。在

 dicta = {'key1': {'keya': 'a', 'keyb': 'b'},
      'key2': {'key3':{'keyc': 'c'}}, 'key4': 4}}

有没有办法我可以用for循环来得到'c'?在

我试过了

^{pr2}$

我要第一次打印

{'key3': {'keyc': 'c'}}

但是我得到了TypeError:第二次打印字符串索引必须是整数。在

提前谢谢! *我编辑了用dicta代替n;我第一次复制粘贴错了。在


Tags: 字符串fordict键值key2key1办法key3
3条回答

for i in somedict将循环字典中的所有键。 从dict views查看更多详细信息

When looping through dictionaries, the key and corresponding value can be retrieved at the same time using the items() method.

items()返回字典项((键,值)对的新视图。 所以你可以试试这个:

for k,v in dicta['key2'].items():
    if isinstance(v,dict):
        for k1,v1 in v.items():
            print(v1)

isinstance(v,dict)如果object参数是dict参数的实例,则返回true,因此不需要捕捉异常。在

看看looping-techniques

希望这有帮助。在

for k in n:
    v = n.get(k)
    if isinstance(v, dict):
    for j in v:
        print(v.get(j))

一般来说,不可能。dict可以任意递归深度,除了使用for循环外,没有什么好方法可以遍历它们。(您可以使用列表实现自己的堆栈并模拟递归,但这并不“好”。)

this question.中有一些遍历字典(计算深度)的递归代码

具体来说,当然。预先了解结构,可以使用正确数量的for循环:

n = {'key1': {'keya': 'a', 'keyb': 'b'},
     'key2': {'key3':{'keyc': 'c'}}, 'key4': 4}

for k1,v1 in n.items():
    try:
        for k2,v2 in v1.items():
            try:
                for k3,v3 in v2.items():
                    print(v3)
            except AttributeError:
                pass
    except AttributeError:
        pass

相关问题 更多 >