Python: encuentre ocurrencias para cada valor de una clave en particular

Dada una Lista de diccionarios, para una clave en particular, encuentre el número de ocurrencias para cada valor de esa clave.

Entrada : test_list = [{‘gfg’: 3, ‘mejor’: 4}, {‘gfg’: 3, ‘mejor’: 5}, 
{‘gfg’: 4, ‘mejor’: 4}, {‘gfg ‘: 7, ‘mejor’: 4}], K = ‘gfg’ 
Salida : [{3: 2}, {4: 1}, {7: 1}] 
Explicación : gfg tiene 2 ocurrencias de 3 como valores.

Entrada : test_list = [{‘gfg’: 3, ‘mejor’: 4}, {‘gfg’: 3, ‘mejor’: 5}, 
{‘gfg’: 4, ‘mejor’: 4}, {‘gfg ‘: 7, ‘mejor’: 4}], K = ‘mejor’ 
Salida : [{4: 3}, {5: 1}] 
Explicación : mejor tiene 3 ocurrencias de 4 como valores.

Método #1: Usar groupby() + comprensión de diccionario

En esto, realizamos la agrupación de valores de clave usando groupby() y la frecuencia de valores se ensambla y extrae usando comprensión de diccionario y len() .

Python3

# Python3 code to demonstrate working of
# Values Frequency grouping of K in dictionaries
# Using groupby() + dictionary comprehension
from itertools import groupby
 
# initializing list
test_list = [{'gfg' : 3, 'best' : 4}, {'gfg' : 3, 'best' : 5},
             {'gfg' : 4, 'best' : 4}, {'gfg' : 7, 'best' : 4} ]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 'gfg'
 
# groupby() used to group values and len() to compute Frequency
res = [{key: len(list(val))} for key, val in groupby(test_list, lambda sub: sub[K])]
 
# printing result
print("The Values Frequency : " + str(res))

Producción:

La lista original es: [{‘gfg’: 3, ‘mejor’: 4}, {‘gfg’: 3, ‘mejor’: 5}, {‘gfg’: 4, ‘mejor’: 4}, {‘ gfg’: 7, ‘best’: 4}] Frecuencia de los valores: [{3: 2}, {4: 1}, {7: 1}]

Método #2: Usando Counter()

En esto, la tarea de realizar la verificación de frecuencia se realiza utilizando Counter(). Devuelve el resultado en un solo diccionario.

Python3

# Python3 code to demonstrate working of
# Values Frequency grouping of K in dictionaries
# Using Counter()
from collections import Counter
 
# initializing list
test_list = [{'gfg' : 3, 'best' : 4}, {'gfg' : 3, 'best' : 5},
             {'gfg' : 4, 'best' : 4}, {'gfg' : 7, 'best' : 4} ]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 'gfg'
 
# groupby() used to group values and len() to compute Frequency
res = dict(Counter(sub[K] for sub in test_list))
 
# printing result
print("The Values Frequency : " + str(res))

 Producción:

La lista original es: [{‘gfg’: 3, ‘mejor’: 4}, {‘gfg’: 3, ‘mejor’: 5}, {‘gfg’: 4, ‘mejor’: 4}, {‘ gfg’: 7, ‘best’: 4}] Frecuencia de los valores: [{3: 2}, {4: 1}, {7: 1}]

Método #3: Usar los métodos keys(), list(), set() y count()

Python3

# Python3 code to demonstrate working of
# Values Frequency grouping of K in dictionaries
 
# initializing list
test_list = [{'gfg' : 3, 'best' : 4}, {'gfg' : 3, 'best' : 5},
            {'gfg' : 4, 'best' : 4}, {'gfg' : 7, 'best' : 4} ]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 'gfg'
x=[]
for i in test_list:
    if K in i.keys():
        x.append(i[K])
p=list(set(x))
nl=[]
for i in p:
    d={}
    d[i]=x.count(i)
    nl.append(d)
 
# printing result
print("The Values Frequency : " + str(nl))
Producción

The original list is : [{'gfg': 3, 'best': 4}, {'gfg': 3, 'best': 5}, {'gfg': 4, 'best': 4}, {'gfg': 7, 'best': 4}]
The Values Frequency : [{3: 2}, {4: 1}, {7: 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *