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)
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)
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))
{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