Dada una lista con elementos, construya un diccionario con frecuencia de factores.
Entrada : test_list = [2, 4, 6, 8]
Salida : {1: 4, 2: 4, 3: 1, 4: 2, 5: 0, 6: 1, 7: 0, 8: 1}
Explicación : Todos los factores cuentan mapeados, por ejemplo, 2 es divisible por los 4 valores, por lo tanto, mapeado con 4.Entrada : test_list = [1, 2]
Salida : {1: 2, 2: 1}
Explicación : similar al anterior, 1 es el factor de todos.
Método #1: Usar bucle
Esta es la forma bruta en la que se puede realizar esta tarea. En esto, los elementos se iteran y se verifica que el número requerido sea un factor, si es así, se aumenta su frecuencia en el diccionario correspondiente a su clave.
Python3
# Python3 code to demonstrate working of # Factors Frequency Dictionary # Using loop # initializing list test_list = [2, 4, 6, 8, 3, 9, 12, 15, 16, 18] # printing original list print("The original list : " + str(test_list)) res = dict() # iterating till max element for idx in range(1, max(test_list)): res[idx] = 0 for key in test_list: # checking for factor if key % idx == 0: res[idx] += 1 # printing result print("The constructed dictionary : " + str(res))
The original list : [2, 4, 6, 8, 3, 9, 12, 15, 16, 18] The constructed dictionary : {1: 10, 2: 7, 3: 6, 4: 4, 5: 1, 6: 3, 7: 0, 8: 2, 9: 2, 10: 0, 11: 0, 12: 1, 13: 0, 14: 0, 15: 1, 16: 1, 17: 0}
Método #2: Usando sum() + loop
Este es un enfoque casi similar al problema anterior. La diferencia es que sum() se usa para la suma en lugar de un bucle manual para resolver problemas.
Python3
# Python3 code to demonstrate working of # Factors Frequency Dictionary # Using sum() + loop # initializing list test_list = [2, 4, 6, 8, 3, 9, 12, 15, 16, 18] # printing original list print("The original list : " + str(test_list)) res = dict() for idx in range(1, max(test_list)): # using sum() instead of loop for sum computation res[idx] = sum(key % idx == 0 for key in test_list) # printing result print("The constructed dictionary : " + str(res))
The original list : [2, 4, 6, 8, 3, 9, 12, 15, 16, 18] The constructed dictionary : {1: 10, 2: 7, 3: 6, 4: 4, 5: 1, 6: 3, 7: 0, 8: 2, 9: 2, 10: 0, 11: 0, 12: 1, 13: 0, 14: 0, 15: 1, 16: 1, 17: 0}
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