Skip to content Skip to sidebar Skip to footer

Python3, Building Nested Dictionary

I'm new with Python, coming from Perl where I've used something like this very often: #!/usr/bin/env perl my %d; my $a = 12; $b = 14; $c = 16; $d{$a}{$b}{$c} = 42; print($d{$a

Solution 1:

You may use dict.setdefault(key, default_value)

my_dict = {}
my_dict.setdefault(a, {}).setdefault(b, {}).setdefault(c, 42)
print(my_dict)  # {12: {14: {16: 42}}}

my_dict = {a: {}}
my_dict.setdefault(a, {}).setdefault(b, {}).setdefault(c, 42)
print(my_dict)  # {12: {14: {16: 42}}}

my_dict = {a: {b: {}}}
my_dict.setdefault(a, {}).setdefault(b, {}).setdefault(c, 42)
print(my_dict)  # {12: {14: {16: 42}}}

Solution 2:

it is actually better to use deafaultdict instead for this specific use case (it is a nested default dict inspired from this answer):

from collections import defaultdict 

defnested_dict():
    return defaultdict(nested_dict)

my_dict = defaultdict(nested_dict)

a = 12
b = 14
c = 16

my_dict[a][b][c] = 42# no KeyError
my_dict[a][b][c] 
>>> 42

Post a Comment for "Python3, Building Nested Dictionary"