Mientras realizamos cálculos sobre el diccionario, podemos encontrarnos con un problema en el que podríamos tener que realizar la tarea de agrupar claves según el valor, es decir, crear una lista de claves, su valor. Esto puede ser diferente en casos de organización de datos en caso de aprendizaje automático. Vamos a discutir cierta forma en que se puede realizar esta tarea.
Método: Usar sorted() + items() + defaultdict()
Esta tarea se puede realizar combinando las tareas que se pueden realizar con las funciones anteriores. El defaultdict() se usa para crear un diccionario inicializado con listas, items() obtiene el par clave-valor y sorted() ayuda a la agrupación.
Python3
# Python3 code to demonstrate working of # Grouping dictionary keys by value # Using sorted() + items() + defaultdict() from collections import defaultdict # Initialize dictionary test_dict = {'gfg' : 1, 'is' : 2, 'best' : 1, 'for' : 3, 'CS' : 2} # printing original dictionary print("The original dictionary : " + str(test_dict)) # Using sorted() + items() + defaultdict() # Grouping dictionary keys by value res = defaultdict(list) for key, val in sorted(test_dict.items()): res[val].append(key) # printing result print("Grouped dictionary is : " + str(dict(res)))
Producción:
The original dictionary : {'gfg': 1, 'is': 2, 'best': 1, 'for': 3, 'CS': 2} Grouped dictionary is : {2: ['CS', 'is'], 1: ['best', 'gfg'], 3: ['for']}
Método 2:
Además, esta tarea también se puede realizar sin utilizar ningún módulo.
Entonces, la lógica aquí es:
podemos verificar si las claves están presentes o no
1. No, entonces podemos crear la clave res [v] = [i]
2. Sí, podemos agregar valor en la clave res [v] + [ i]
Python3
d_input = {'Input.txt': 'Randy', 'Code.py': 'Stan', 'Output.txt': 'Randy'} res = {} for i, v in d_input.items(): res[v] = [i] if v not in res.keys() else res[v] + [i] print(res)
Producción:
{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}
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