Buonasera, ho appena riconsegnato l'hw4 e riesco a passare solo 12 test, vi spiego il mio codice e vi chiedo una mano per migliorarlo:
Funzione 1) Leggo i file e ne ritorno una lista di parole
Funzione 2) uso la funzione map e ottengo una lista di dizionari, ciascuno dei quali rappresenta una parola, che associano la chiave posizione al valore carattere della parola (es: [{0:f, 1:o, 2:t, 3:o},{0:s, 1:i}]
Funzione 3) questa credo sia la funzione che mi rallenta; prende la lista ottenuta prima e la itera con un doppio for per poi fare vari controlli if/else: in pratica cerco di iterare ogni dizionario nella lista per aggiungere in un dizionario vuoto la posizione come chiave e unaltro dizionario come valore: che a sua volta ha come chiave il carattere e come valore la frequenza con cui appare in quella posizione
Funzione 4) l'ultima funzione prende questo dizionario e per ogni dizionario al suo interno prende le chiavi, ovvero i caratteri, con il valore più alto e li mette in una lista che viene poi ordinata con sorted, in questo modo prende il valore più alto e in ordine lessicografico, poi aggiungo il primo elemento della lista alla stringa finale
Queste 4 funzioni vengono chiamate all'interno di most_frequent_chars
Volevo chiedervi come potrei velocizzare il mio programma? Quale ragionamento mi aiuterebbe?
Funzione 1) Leggo i file e ne ritorno una lista di parole
Funzione 2) uso la funzione map e ottengo una lista di dizionari, ciascuno dei quali rappresenta una parola, che associano la chiave posizione al valore carattere della parola (es: [{0:f, 1:o, 2:t, 3:o},{0:s, 1:i}]
Funzione 3) questa credo sia la funzione che mi rallenta; prende la lista ottenuta prima e la itera con un doppio for per poi fare vari controlli if/else: in pratica cerco di iterare ogni dizionario nella lista per aggiungere in un dizionario vuoto la posizione come chiave e unaltro dizionario come valore: che a sua volta ha come chiave il carattere e come valore la frequenza con cui appare in quella posizione
Funzione 4) l'ultima funzione prende questo dizionario e per ogni dizionario al suo interno prende le chiavi, ovvero i caratteri, con il valore più alto e li mette in una lista che viene poi ordinata con sorted, in questo modo prende il valore più alto e in ordine lessicografico, poi aggiungo il primo elemento della lista alla stringa finale
Queste 4 funzioni vengono chiamate all'interno di most_frequent_chars
Volevo chiedervi come potrei velocizzare il mio programma? Quale ragionamento mi aiuterebbe?