A veces, al trabajar con listas de diccionarios de Python, uno puede tener un problema en el que necesitamos encontrar la frecuencia de todos los valores que ocurren en una clave específica en la lista de diccionarios. Esto puede tener aplicación en muchos dominios, incluido el desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada : test_list = [{‘gfg’: [1]}, {‘bueno’: [5, 78, 10], ‘gfg’: [5, 6, 7, 8]}]
Salida : {8: 1, 1: 1, 5: 1, 6: 1, 7: 1}Entrada : test_list = [{‘gfg’: [1, 5, 6, 7]}]
Salida : {1: 1, 5: 1, 6: 1, 7: 1}
Método #1: Uso Counter()
de la comprensión de lista +
La combinación de las funcionalidades anteriores se utiliza para resolver este problema. En esto, realizamos la tarea de encontrar la frecuencia usando Counter() y el cálculo se realiza usando la comprensión de listas.
# Python3 code to demonstrate working of # Values frequencies of key # Using Counter() + list comprehension from collections import Counter # initializing list test_list = [{'gfg' : [1, 5, 6, 7], 'is' : [9, 6, 2, 10]}, {'gfg' : [5, 6, 7, 8], 'good' : [5, 7, 10]}, {'gfg' : [7, 5], 'best' : [5, 7]}] # printing original list print("The original list is : " + str(test_list)) # frequency key freq_key = "gfg" # Values frequencies of key # Using Counter() + list comprehension res = Counter([idx for val in test_list for idx in val[freq_key]]) # printing result print("The frequency dictionary : " + str(dict(res)))
La lista original es: [{‘gfg’: [1, 5, 6, 7], ‘is’: [9, 6, 2, 10]}, {‘gfg’: [5, 6, 7, 8] , ‘bueno’: [5, 7, 10]}, {‘gfg’: [7, 5], ‘mejor’: [5, 7]}]
El diccionario de frecuencias: {8: 1, 1: 1, 5: 3, 6: 2, 7: 3}
Método #2: Usarchain.from_iterables() + Counter()
La combinación de los métodos anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de iteración y enlace usando chain.from_iterables().
# Python3 code to demonstrate working of # Values frequencies of key # Using chain.from_iterables() + Counter() from collections import Counter import itertools # initializing list test_list = [{'gfg' : [1, 5, 6, 7], 'is' : [9, 6, 2, 10]}, {'gfg' : [5, 6, 7, 8], 'good' : [5, 7, 10]}, {'gfg' : [7, 5], 'best' : [5, 7]}] # printing original list print("The original list is : " + str(test_list)) # frequency key freq_key = "gfg" # Values frequencies of key # Using chain.from_iterables() + Counter() res = Counter(itertools.chain.from_iterable([sub[freq_key] for sub in test_list])) # printing result print("The frequency dictionary : " + str(dict(res)))
La lista original es: [{‘gfg’: [1, 5, 6, 7], ‘is’: [9, 6, 2, 10]}, {‘gfg’: [5, 6, 7, 8] , ‘bueno’: [5, 7, 10]}, {‘gfg’: [7, 5], ‘mejor’: [5, 7]}]
El diccionario de frecuencias: {8: 1, 1: 1, 5: 3, 6: 2, 7: 3}
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