Programa Python para calcular frecuencias de diccionarios

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

Deja una respuesta

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