Python | Crear un diccionario multidimensional

A veces, mientras trabajamos con diccionarios de Python, necesitamos tener diccionarios anidados. Pero el problema es que tenemos que declarar antes de inicializar un valor en el diccionario anidado. Resolvamos este problema particular a través de los métodos discutidos en este artículo.

Método #1: Usar setdefault() 
Esta función se usa para definir un diccionario vacío en el primer nivel anidado del diccionario para convertirlo en 2D. En este caso no hay necesidad de definir diccionarios explícitos en ese nivel de diccionario. 

Python3

# Python3 code to demonstrate working of
# Creating Multidimensional dictionary
# Using setdefault()
 
# Initialize dictionary
test_dict = {}
 
# printing original dictionary
print("The original dictionary : " +  str(test_dict))
 
# Using setdefault()
# Creating Multidimensional dictionary
test_dict.setdefault(1, {})[4] = 7
 
# printing result
print("Dictionary after nesting : " + str(test_dict))
Producción : 

The original dictionary : {}
Dictionary after nesting : {1: {4: 7}}

 

Método #2: Usando defaultdict() 
Uno puede lograr la creación de múltiples anidamientos usando defaultdict(). No solo en un nivel, sino hasta el nivel N, la anidación se puede lograr usando esto. El inconveniente es que crea los objetos predeterminados.

Python3

# Python3 code to demonstrate working of
# Creating Multidimensional dictionary
# Using defaultdict()
from collections import defaultdict
 
# Utility function to create dictionary
def multi_dict(K, type):
    if K == 1:
        return defaultdict(type)
    else:
        return defaultdict(lambda: multi_dict(K-1, type))
 
# Initialize dictionary
test_dict = {}
 
# printing original dictionary
print("The original dictionary : " +  str(test_dict))
 
# Using defaultdict()
# Creating Multidimensional dictionary
# calling function
test_dict = multi_dict(3, int)
test_dict[2][3][4] = 1
 
# printing result
print("Dictionary after nesting : " + str(dict(test_dict)))
Producción : 

The original dictionary : {}
Dictionary after nesting : {2: defaultdict(<function multi_dict.<locals>.<lambda> at 0x7f8707a54158>, {3: defaultdict(<class 'int'>, {4: 1})})}

 

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *