Contando las frecuencias en una lista usando el diccionario en Python

Dada una lista desordenada de algunos elementos (pueden o no ser números enteros), encuentre la frecuencia de cada elemento distinto en la lista usando un diccionario. 
Ejemplo: 
 

Input : [1, 1, 1, 5, 5, 3, 1, 3, 3, 1,
                  4, 4, 4, 2, 2, 2, 2]
Output : 1 : 5
         2 : 4
         3 : 3
         4 : 3
         5 : 2
Explanation : Here 1 occurs 5 times, 2 
              occurs 4 times and so on...

El problema se puede resolver de muchas maneras. Un enfoque simple sería iterar sobre la lista y usar cada elemento distinto de la lista como clave del diccionario y almacenar el recuento correspondiente de esa clave como valores. A continuación se muestra el código de Python para este enfoque:
 

Python

# Python program to count the frequency of
# elements in a list using a dictionary
 
def CountFrequency(my_list):
 
    # Creating an empty dictionary
    freq = {}
    for item in my_list:
        if (item in freq):
            freq[item] += 1
        else:
            freq[item] = 1
 
    for key, value in freq.items():
        print ("% d : % d"%(key, value))
 
# Driver function
if __name__ == "__main__":
    my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]
 
    CountFrequency(my_list)
Producción: 

 1 :  5
 2 :  4
 3 :  3
 4 :  3
 5 :  2

 

Complejidad temporal: O(N), donde N es la longitud de la lista.

Forma alternativa: un enfoque alternativo puede ser usar el método list.count(). 
 

Python

# Python program to count the frequency of
# elements in a list using a dictionary
 
def CountFrequency(my_list):
     
    # Creating an empty dictionary
    freq = {}
    for items in my_list:
        freq[items] = my_list.count(items)
     
    for key, value in freq.items():
        print ("% d : % d"%(key, value))
 
# Driver function
if __name__ == "__main__":
    my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]
    CountFrequency(my_list)
Producción: 

 1 :  5
 2 :  4
 3 :  3
 4 :  3
 5 :  2

 

Complejidad temporal: O(N 2 ), donde N es la longitud de la lista. La complejidad de tiempo list.count() es O(N) solo, y cuando se usa dentro del ciclo se convierte en O(N 2 ). 

Forma alternativa: un enfoque alternativo puede ser usar el método dict.get(). Esto hace que el programa sea mucho más corto y permite comprender cómo es útil el método get en lugar de if…else. 
 

Python

# Python program to count the frequency of
# elements in a list using a dictionary
 
def CountFrequency(my_list):
     
   # Creating an empty dictionary
   count = {}
   for i in [1, 1, 1, 5, 5, 3, 1, 3, 3, 1 ,4, 4, 4, 2, 2, 2, 2]:
    count[i] = count.get(i, 0) + 1
   return count
 
# Driver function
if __name__ == "__main__":
    my_list =[1, 1, 1, 5, 5, 3, 1, 3, 3, 1, 4, 4, 4, 2, 2, 2, 2]
    print(CountFrequency(my_list))
Producción: 

{1: 5, 5: 2, 3: 3, 4: 3, 2: 4}

 

Artículo relacionado: 
Cuente las frecuencias de todos los elementos en una array en Python usando el módulo de colecciones
 

Publicación traducida automáticamente

Artículo escrito por SouravAChowdhury_97 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 *