Veamos cómo convertir un diccionario anidado dado en un objeto
Método 1: Usando el json
módulo. Podemos resolver este problema en particular importando el módulo json y usando un enlace de objeto personalizado en el json.loads()
método.
# importing the module import json # declaringa a class class obj: # constructor def __init__(self, dict1): self.__dict__.update(dict1) def dict2obj(dict1): # using json.loads method and passing json.dumps # method and custom object hook as arguments return json.loads(json.dumps(dict1), object_hook=obj) # initializing the dictionary dictionary = {'A': 1, 'B': {'C': 2}, 'D': ['E', {'F': 3}],'G':4} # calling the function dict2obj and # passing the dictionary as argument obj1 = dict2obj(dictionary) # accessing the dictionary as an object print (obj1.A) print(obj1.B.C) print(obj1.D[0]) print(obj1.D[1].F) print(obj1.G)
Producción
1 2 E 3 4
Método 2: Usando el isinstance()
método
. Podemos resolver este problema en particular usando el isinstance()
método que se usa para verificar si un objeto es una instancia de una clase en particular o no.
def dict2obj(d): # checking whether object d is a # instance of class list if isinstance(d, list): d = [dict2obj(x) for x in d] # if d is not a instance of dict then # directly object is returned if not isinstance(d, dict): return d # declaring a class class C: pass # constructor of the class passed to obj obj = C() for k in d: obj.__dict__[k] = dict2obj(d[k]) return obj # initializing the dictionary dictionary = {'A': 1, 'B': {'C': 2}, 'D': ['E', {'F': 3}],'G':4} # calling the function dict2obj and # passing the dictionary as argument obj2 = dict2obj(dictionary) # accessing the dictionary as an object print(obj2.A) print(obj2.B.C) print(obj2.D[0]) print(obj2.D[1].F) print(obj2.G)
Producción
1 2 E 3 4
Publicación traducida automáticamente
Artículo escrito por manandeep1610 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA