Dado un diccionario anidado, pruebe si otro diccionario es un subconjunto.
Ejemplos:
Entrada : test_dict = {“gfg”: 12, ‘best’: {1: 3, 4: 3, ‘geeks’: {8: 7}}}, sub_dict = {8: 7}
Salida : Verdadero
Explicación : Obligatorio Anidado diccionario presente en Diccionario.
Entrada : test_dict = {“gfg”: 12, ‘best’: {1: 3, 4: 3, ‘geeks’: {8: 7}}}, sub_dict = {9: 7}
Salida : falso
Explicación : diccionario anidado no presente en Diccionario.
Método: Usar all() + any() + isinstance() + recursividad
En esto, verificamos el subconjunto en cada anidamiento usando la función, y verificamos todas las claves que coinciden usando all(), any() se usa para que la utilidad pruebe cualquier posible subconjunto anidado que coincida con el subconjunto probado en el diccionario de prueba. Cada anidamiento se prueba usando recursividad.
Python3
# Python3 code to demonstrate working of # Nested Dictionary Subset Python # Using all() + any() + isinstance() + recursion def check_eq(mast_dict, subdict): if not isinstance(mast_dict, (dict, list)): return mast_dict == subdict if isinstance(mast_dict, list): # check for nesting dictionaries in list return all(check_eq(x, y) for x, y in zip(mast_dict, subdict)) # check for all keys return all(mast_dict.get(idx) == subdict[idx] or check_eq(mast_dict.get(idx), subdict[idx]) for idx in subdict) def is_subset(mast_dict, subdict): if isinstance(mast_dict, list): # any matching dictionary in list return any(is_subset(idx, subdict) for idx in mast_dict) # any matching nested dictionary return check_eq(mast_dict, subdict) or (isinstance(mast_dict, dict) and any(is_subset(y, subdict) for y in mast_dict.values())) # initializing dictionary test_dict = {"gfg": 12, 'best': {1: 3, 4: 3, 'geeks': {8: 7}}, 'cs': 7} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # initializing subset dict sub_dict = {8: 7} # calling func res = is_subset(test_dict, sub_dict) # printing result print("Is dictionary subset : " + str(res))
Producción:
El diccionario original es: {‘gfg’: 12, ‘best’: {1: 3, 4: 3, ‘geeks’: {8: 7}}, ‘cs’: 7}
¿Es el subconjunto del diccionario: verdadero?
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