A veces, mientras trabajamos con diccionarios de Python, podemos tener problemas en los que necesitamos verificar si los valores de los diccionarios no forman un bucle cuando se asignan a través de la clave de otros diccionarios. Este tipo de problema puede tener aplicaciones en muchos dominios, incluida la programación competitiva y la fuerza bruta.
Entrada : test_dict1 = {9: [1, 5], 8: [1, 4], 10: [4, 2]}
test_dict2 = {2: [1, 8]}
Salida : VerdaderoEntrada : test_dict1 = {15: [1, 5]}
test_dict2 = {2: [1, 10]}
Salida : Falso
Método n.º 1: Uso del bucle
Esta es la forma bruta en la que se puede realizar esta tarea. En esto, iteramos para todos los valores de las claves de un diccionario en particular y mapeamos con valores de claves similares en las claves del diccionario.
# Python3 code to demonstrate working of # Detect loop in Dictionaries # Using loop # initializing dictionaries test_dict1 = {7 : [1, 2], 8 : [1, 4], 9 : [4, 2]} test_dict2 = {2 : [1, 7], 10 : [1, 6], 11 : [24, 20]} # printing original dictionaries print("The original dictionary 1 is : " + str(test_dict1)) print("The original dictionary 2 is : " + str(test_dict2)) # Detect loop in Dictionaries # Using loop res = False for idx1 in test_dict1.values(): temp1 = (idx for idx in idx1 if idx in test_dict2) for idx in temp1: for idx2 in test_dict2[idx]: if idx2 in test_dict1: res = True # printing result print("Does dictionaries contain loop : " + str(res))
The original dictionary 1 is : {8: [1, 4], 9: [4, 2], 7: [1, 2]} The original dictionary 2 is : {2: [1, 7], 11: [24, 20], 10: [1, 6]} Does dictionaries contain loop : True
Método n.º 2: usar el any()
bucle +
Esta es una forma abreviada de resolver este problema. En esto, reducimos el bucle interno inculcando any() y devolvemos True si hay algún bucle presente.
# Python3 code to demonstrate working of # Detect loop in Dictionaries # Using any() + loop # initializing dictionaries test_dict1 = {7 : [1, 2], 8 : [1, 4], 9 : [4, 2]} test_dict2 = {2 : [1, 7], 10 : [1, 6], 11 : [24, 20]} # printing original dictionaries print("The original dictionary 1 is : " + str(test_dict1)) print("The original dictionary 2 is : " + str(test_dict2)) # Detect loop in Dictionaries # Using any() + loop res = False for key, val in test_dict1.items(): if any([vl in test_dict2 and key in test_dict2[vl] for vl in val]): res = True # printing result print("Does dictionaries contain loop : " + str(res))
The original dictionary 1 is : {8: [1, 4], 9: [4, 2], 7: [1, 2]} The original dictionary 2 is : {2: [1, 7], 11: [24, 20], 10: [1, 6]} Does dictionaries contain loop : True
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