如何遍历嵌套的dict?

2024-04-27 17:48:05 发布

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

我有一个嵌套的python dictionary数据结构。我想使用collection模块读取它的键和值without。数据结构如下。

d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}

我试着用下面的方法读字典里的钥匙,但却弄错了。

代码

for key, value in d:
    print(Key)

错误

ValueError: too many values to unpack (expected 2)

所以,谁能解释一下错误背后的原因,以及如何在字典中迭代。


Tags: 模块方法数据结构dictionary字典foo错误bar
3条回答

要获取键和值,您需要dict.items()

for key, value in d.items():
    print(key)

如果你只想要钥匙:

for key in d:
    print(key)

作为请求的输出,代码如下

    d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}

    for k1,v1 in d.iteritems(): # the basic way
        temp = ""   
        temp+=k1
        for k2,v2 in v1.iteritems():
           temp = temp+" "+str(k2)+" "+str(v2)
        print temp

代替iteritems()也可以使用items(),但是iteritems()效率更高,并且返回一个迭代器。

希望这有帮助:)

keys()方法返回一个视图对象,该对象显示字典中所有键的列表

迭代嵌套字典:

d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}

for i in d.keys():
    print i
    for j in d[i].keys():
        print j

或者

for i in d:
    print i
    for j in d[i]:
        print j

输出:

dict1 
foo
bar

dict2
baz 
quux

其中,i迭代主字典键,j迭代嵌套字典键。

相关问题 更多 >