python - 我们可以使用 for 循环来迭代字典的字典吗?

标签 python python-3.x dictionary

我有一个由嵌套字典和键值组成的字典。

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

有没有办法使用 for 循环到达“c”?

我试过了,

print(dicta['key2'])

for x in dicta['key2']:
    for y in x['key3']:
        print(y)

对于第一次打印,我得到

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

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

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

最佳答案

一般来说,没有。字典的递归深度可以是任意的,除了 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

关于python - 我们可以使用 for 循环来迭代字典的字典吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184428/

相关文章:

python - 为什么 < 不能从命令行(简单的 Python 代码)读取文件?

dictionary - 为什么这两个 for 循环变体会给我不同的行为?

python - 计算给定Python中另一个类的对象的周长

python - Pyspark:根据数组(字符串)长度或 CountVectorizer 计数过滤 DF

python - 在 Python 3.3.2 中计算短语频率

python - 创建 word2vec 模型 syn1neg.npy 扩展

python - 使用 python 3 作为缓冲区溢出而不是 Python 2

python - 如何根据Python中的值高将具​​有数值的字典转换为列表

javascript - 如何从 arr.map(elem => dict[elem]) 中提取函数?

python - 将向量查找字符串转换为向量值 [python]