import copy def es54(lista): #return es54_copy(lista) return es54_indici(lista) def es54_copy(lista): ''' la funzione es54(lista) che presa in input una lista contenente interi e stringhe, modifica la lista distruttivamente e restituisce un dizionario. Al termine della funzione dalla lista devono risultare cancellate tutte le stringhe e il dizionario restituito deve contenere come chiavi le stringhe cancellate ciascuna con attributo il numero di volte in cui occorrevano nella lista. Ad esempio per lista=[1,'a',2,'b','a',8,'d',8] la funzione al termine restituisce il dizionario {'a':2,'b':1,'d':1} e la lista diviene [1,2,8,8] ''' # inserisci qui il tuo codice # all'inizio i conti sono {} conteggio = {} # per ogni elemento della lista for x in lista.copy(): # se si tratta di una stringa if type(x) == str: # lo elimino dalla lista lista.remove(x) # lo conto (aggiornando il dizionario) if x in conteggio: conteggio[x] += 1 else: conteggio[x] = 1 # torno i conteggi return conteggio def es54_indici(lista): ''' la funzione es54(lista) che presa in input una lista contenente interi e stringhe, modifica la lista distruttivamente e restituisce un dizionario. Al termine della funzione dalla lista devono risultare cancellate tutte le stringhe e il dizionario restituito deve contenere come chiavi le stringhe cancellate ciascuna con attributo il numero di volte in cui occorrevano nella lista. Ad esempio per lista=[1,'a',2,'b','a',8,'d',8] la funzione al termine restituisce il dizionario {'a':2,'b':1,'d':1} e la lista diviene [1,2,8,8] ''' # inserisci qui il tuo codice # all'inizio i conti sono {} conteggio = {} # per ogni elemento della lista for i in range(len(lista)-1, -1, -1): x = lista[i] # se si tratta di una stringa if type(x) == str: # lo elimino dalla lista lista.pop(i) # lo conto (aggiornando il dizionario) if x in conteggio: conteggio[x] += 1 else: conteggio[x] = 1 # torno i conteggi return conteggio