python – How to iterate through a nested dict?

python – How to iterate through a nested dict?

keys() method returns a view object that displays a list of all the keys in the dictionary

Iterate nested dictionary:

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

OR

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

output:

dict1 
foo
bar

dict2
baz 
quux

where i iterate main dictionary key and j iterate the nested dictionary key.

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 🙂

python – How to iterate through a nested dict?

The following will work with multiple levels of nested-dictionary:

def get_all_keys(d):
    for key, value in d.items():
        yield key
        if isinstance(value, dict):
            yield from get_all_keys(value)


d = {dict1: {foo: 1, bar: 2}, dict2: {dict3: {baz: 3, quux: 4}}}
for x in get_all_keys(d):
    print(x)

This will give you:

dict1
foo
bar
dict2
dict3
baz
quux

Leave a Reply

Your email address will not be published. Required fields are marked *