Dicionário aninhado em Python

Manav Narula 10 outubro 2023
Dicionário aninhado em Python

Um dicionário Python aninhado é um dicionário dentro de um dicionário, onde os valores do dicionário externo também são dicionários. O código a seguir mostra um exemplo elementar.

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
print(d1)

Resultado:

{0: {'Dept': 'Mathematics', 'Prof': 'Dr Jack'}, 1: {'Dept': 'Physics', 'Prof': 'Dr Mark'}}

Podemos acessar facilmente os elementos do dicionário usando a chave do dicionário aninhado, conforme demonstrado no exemplo abaixo.

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
print(d1[0]["Dept"])

Resultado:

Mathematics

Aqui, 0 é a chave do dicionário externo e 'Dept' é a chave do dicionário interno.

Também podemos adicionar elementos como fazemos em um dicionário Python normal. Além disso, também podemos adicionar um dicionário inteiro como um elemento. Por exemplo:

d1 = {
    0: {"Dept": "Mathematics", "Prof": "Dr Jack"},
    1: {"Dept": "Physics", "Prof": "Dr Mark"},
}
d1[2] = {"Dept": "CS", "Prof": "Dr Jay"}
print(d1[2])

Resultado:

{'Dept': 'CS', 'Prof': 'Dr Jay'}

Python tem um construtor defaultdict() no módulo collections para criar dicionários e retornar um valor padrão quando uma chave indisponível é acessada.

O tipo de dados defaultdict() é muito útil quando você deseja retornar valores padrão ou inicializar o dicionário de acordo com sua necessidade. O código a seguir mostra como criar um dicionário simples com este método:

from collections import defaultdict

d1 = defaultdict(lambda: defaultdict(dict))
d1["key_outer_1"] = {"key_inner_1": "val1"}
d1["key_outer_2"] = {"key_inner_2": "val2"}
print(dict(d1))

Resultado:

{'key_outer_1': {'key_inner_1': 'val1'}, 'key_outer_2': {'key_inner_2': 'val2'}}
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Python Dictionary