pythondictionary

How to iterate through a nested dict?


I have a nested python dictionary data structure. I want to read its keys and values without using collection module. The data structure is like bellow.

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

I was trying to read the keys in the dictionary using the bellow way but getting error.

Code

for key, value in d:
    print(Key)

Error

ValueError: too many values to unpack (expected 2)

So can anyone please explain the reason behind the error and how to iterate through the dictionary.


Solution

  • As the requested output, the code goes like this

        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
    

    In place of iteritems() you can use items() as well, but iteritems() is much more efficient and returns an iterator.

    Hope this helps :)