Dada una lista de diccionarios, la tarea aquí es escribir un programa en Python para extraer las frecuencias de diccionario de cada diccionario.
Entrada: test_list = [{‘gfg’: 1, ‘es’: 4, ‘mejor’: 9},
{‘gfg’: 6, ‘es’: 3, ‘mejor’: 8},
{‘gfg’: 1, ‘es’: 4, ‘mejor’: 9},
{‘gfg’: 1, ‘es’: 1, ‘mejor’: 9},
{‘gfg’: 6, ‘es’: 3, ‘mejor’: 8}]
Salida: [({‘gfg’: 1, ‘es’: 4, ‘mejor’: 9}, 2), ({‘gfg’: 6, ‘es’: 3, ‘mejor’: 8}, 2) , ({‘gfg’: 1, ‘es’: 1, ‘mejor’: 9}, 1)]
Explicación: diccionarios con su frecuencia adjunta como resultado en la lista.
Entrada: test_list = [{‘gfg’: 1, ‘es’: 4, ‘mejor’: 9},
{‘gfg’: 6, ‘es’: 3, ‘mejor’: 8},
{‘gfg’: 1, ‘es’: 4, ‘mejor’: 9},
{‘gfg’: 1, ‘es’: 1, ‘mejor’: 9}]
Salida: [({‘gfg’: 1, ‘es’: 4, ‘mejor’: 9}, 2), ({‘gfg’: 6, ‘es’: 3, ‘mejor’: 8}, 1) , ({‘gfg’: 1, ‘es’: 1, ‘mejor’: 9}, 1)]
Explicación: diccionarios con su frecuencia adjunta como resultado en la lista.
Método 1: Usando index() y loop
En esto, cada diccionario se itera y se usa index() para obtener el índice del diccionario mapeado con sus frecuencias crecientes, y el contador de incremento en caso de diccionario repetido.
Ejemplo:
Python3
# initializing list test_list = [{'gfg': 1, 'is': 4, 'best': 9}, {'gfg': 6, 'is': 3, 'best': 8}, {'gfg': 1, 'is': 4, 'best': 9}, {'gfg': 1, 'is': 1, 'best': 9}, {'gfg': 6, 'is': 3, 'best': 8}] # printing original list print("The original list is : " + str(test_list)) res = [] for sub in test_list: flag = 0 for ele in res: # checking for presence and incrementing frequency if sub == ele[0]: res[res.index(ele)] = (sub, ele[1] + 1) flag = 1 if not flag: res.append((sub, 1)) # printing result print("Dictionaries frequencies : " + str(res))
Producción:
La lista original es: [{‘gfg’: 1, ‘is’: 4, ‘best’: 9}, {‘gfg’: 6, ‘is’: 3, ‘best’: 8}, {‘gfg’ : 1, ‘es’: 4, ‘mejor’: 9}, {‘gfg’: 1, ‘es’: 1, ‘mejor’: 9}, {‘gfg’: 6, ‘es’: 3, ‘ mejor’: 8}]
Frecuencias de los diccionarios: [({‘best’: 9, ‘gfg’: 1, ‘is’: 4}, 2), ({‘best’: 8, ‘gfg’: 6, ‘is’: 3}, 2 ), ({‘mejor’: 9, ‘gfg’: 1, ‘es’: 1}, 1)]
Método 2: usar Counter() y sorted()
En esto, los elementos del diccionario se convierten en pares de tuplas y luego se usa Counter para obtener la frecuencia de cada uno. En el último paso, cada diccionario se reconvierte a su forma original.
Ejemplo:
Python3
from collections import Counter # initializing list test_list = [{'gfg': 1, 'is': 4, 'best': 9}, {'gfg': 6, 'is': 3, 'best': 8}, {'gfg': 1, 'is': 4, 'best': 9}, {'gfg': 1, 'is': 1, 'best': 9}, {'gfg': 6, 'is': 3, 'best': 8}] # printing original list print("The original list is : " + str(test_list)) # getting frequencies temp = Counter(tuple(sorted(sub.items())) for sub in test_list) # converting back to Dictionaries res = [(dict([tuple(ele) for ele in sub]), temp[sub]) for sub in temp] # printing result print("Dictionaries frequencies : " + str(res))
Producción:
La lista original es: [{‘gfg’: 1, ‘is’: 4, ‘best’: 9}, {‘gfg’: 6, ‘is’: 3, ‘best’: 8}, {‘gfg’ : 1, ‘es’: 4, ‘mejor’: 9}, {‘gfg’: 1, ‘es’: 1, ‘mejor’: 9}, {‘gfg’: 6, ‘es’: 3, ‘ mejor’: 8}]
Frecuencias de los diccionarios: [({‘best’: 9, ‘gfg’: 1, ‘is’: 4}, 2), ({‘best’: 8, ‘gfg’: 6, ‘is’: 3}, 2 ), ({‘mejor’: 9, ‘gfg’: 1, ‘es’: 1}, 1)]
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