A veces, mientras trabajamos con los diccionarios de Python, podemos tener un problema en el que necesitamos reorganizar las claves del diccionario para que un valor sea seguido por la misma clave en el diccionario. Este problema puede tener aplicación en algoritmos de programación competitivos y problemas de grafos. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada : test_dict = {1: 2, 3: 2, 2: 3}
Salida : {1: 2, 2: 3, 3: 2}
Entrada : test_dict = {1: 2}
Salida : {1: 2}
Método n.º 1: Usar loop + teclas()
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, extraemos las claves del diccionario usando keys() e iteramos hasta que encontramos el valor seguido por la misma clave.
Python3
# Python3 code to demonstrate working of # Rearrange dictionary for consecutive value-keys # Using loop + keys() # initializing dictionary test_dict = {1 : 3, 4 : 5, 3 : 4, 5 : 6} # printing original dictionary print("The original dictionary : " + str(test_dict)) # Rearrange dictionary for consecutive value-keys # Using loop + keys() temp = list(test_dict.keys())[0] res = {} while len(test_dict) > len(res): res[temp] = temp = test_dict[temp] # printing result print("The rearranged dictionary : " + str(res))
The original dictionary : {1: 3, 4: 5, 3: 4, 5: 6} The rearranged dictionary : {1: 3, 3: 4, 4: 5, 5: 6}
Método n.º 2: usar la comprensión del diccionario + acumular()
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de emparejamiento usando acumular y reorganizar el nuevo diccionario usando la comprensión del diccionario.
Python3
# Python3 code to demonstrate working of # Rearrange dictionary for consecutive value-keys # Using dictionary comprehension + accumulate() from itertools import accumulate # initializing dictionary test_dict = {1 : 3, 4 : 5, 3 : 4, 5 : 6} # printing original dictionary print("The original dictionary : " + str(test_dict)) # Rearrange dictionary for consecutive value-keys # Using dictionary comprehension + accumulate() res = {key : test_dict[key] for key in accumulate(test_dict, lambda key, x :test_dict[key])} # printing result print("The rearranged dictionary : " + str(res))
The original dictionary : {1: 3, 4: 5, 3: 4, 5: 6} The rearranged dictionary : {1: 3, 3: 4, 4: 5, 5: 6}
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