Python: frecuencia de valores en las listas de diccionarios

Dadas dos listas de diccionarios, calcule la frecuencia correspondiente a cada valor en el diccionario del 1 al segundo.

Entrada : test_list1 = [{“Gfg”: 6}, {“best”: 10}], test_list2 = [{“a”: 6}, {“b”: 10}, {“d”: 6}}]
Salida : {‘Gfg’: 2, ‘mejor’: 1}
Explicación : 6 tiene 2 ocurrencias en la segunda lista, 10 tiene 1.

Entrada : test_list1 = [{“Gfg”: 6}], test_list2 = [{“a”: 6}, {“b”: 6}, {“d”: 6}}] Salida: {‘Gfg’
: 3 }
Explicación : 6 tiene 3 ocurrencias en la segunda lista.

Método: uso de comprensión de diccionario + recuento() + comprensión de lista

 La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. En esto, realizamos esta tarea usando 2 pasos, primero extraemos todos los valores de la segunda lista y luego realizamos el mapeo con frecuencia con el primer diccionario usando comprensión de lista y conteo().

Python3

# Python3 code to demonstrate working of 
# Values frequency across Dictionaries lists
# Using list comprehension + dictionary comprehension + count()
  
# initializing lists
test_list1 = [{"Gfg" : 6}, {"is" : 9}, {"best" : 10}]
test_list2 = [{"a" : 6}, {"b" : 10}, {"c" : 9}, {"d" : 6}, {"e" : 9}, {"f" : 9}]
  
# printing original list
print("The original list 1 : " + str(test_list1))
print("The original list 2 : " + str(test_list2))
  
# extracting values from target dictionary
temp = [val for sub in test_list2 for key, val in sub.items()]
  
# frequency mapping from 1st dictionary keys 
res = {key : temp.count(val) for sub in test_list1 for key, val in sub.items()}
  
# printing result 
print("The frequency dictionary : " + str(res))
Producción

The original list 1 : [{'Gfg': 6}, {'is': 9}, {'best': 10}]
The original list 2 : [{'a': 6}, {'b': 10}, {'c': 9}, {'d': 6}, {'e': 9}, {'f': 9}]
The frequency dictionary : {'Gfg': 2, 'is': 3, 'best': 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 *