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))
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)))
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