''' Un modo comune di memorizzare tabelle e' come liste di dizionari. Ogni riga della tabella corrisponde ad un dizionario le cui chiavi sono i nomi delle colonne della tabella. Questa collezione di dizionari e' poi memorizzata in una lista. Ad esempio la tabella nome | anno | tel --------|------|--------- Sofia | 1973 | 5553546 Bruno | 1981 | 5558432 puo' essere memorizzata come [{'nome': 'Sofia', 'anno': 1973 ,'tel': 5553546},{'nome': 'Bruno', 'anno': 1981 ,'tel': 5558432}] ''' def es27_0(tabella, colonna, valore): ''' Si implementi la funzione es27(tabella, colonna, valore) che presi in input - una tabella rappresentata tramite lista di dizionari - una stringa con il nome di una delle colonne della tabella - un valore modifica distruttivamente la tabella eliminando la colonna indicata e le righe che in quella colonna avevano valori diversi da valore. La funzione deve poi restituire il numero di righe eliminate. Ad esempio con tabella = [{'nome': 'Sofia', 'anno': 1973 ,'tel': 5553546}, {'nome': 'Bruno', 'anno': 1981 ,'tel': 5558432}] al termine di es27(dati, 'anno', 1981) verra' restituito il numero 1 e la tabella risultera' modificata in [{'nome': 'Bruno','tel': 5558432}] ''' # inserisci qui il tuo codice conteggio = elimina_righe(tabella, colonna, valore) elimina_colonna(tabella, colonna) return conteggio # il conteggio all'inizio è 0 # scandisco tutta la tabella # per ogni riga/dizionario # se il valore del campo cercato è quello indicato # elimino questa riga/dizionario dalla tabella # incremento il conteggio # elimino la colonna dalla riga # torno il conteggio # per eliminare le righe indicate dal valore cercato e la colonna # cerco i valori e elimino le righe # elimino tutta la colonna # per eliminare le righe # scandisco la tabella per indici dalla fine # quando trovo il valore elimino la riga ed incremento un contatore # torno il contatore def elimina_righe(tabella, nome, valore): N = len(tabella) conteggio = 0 for i in range(N-1, -1, -1): # indici da N-1 a 0 riga = tabella[i] if riga[nome] != valore: del tabella[i] conteggio += 1 return conteggio # per eliminare la colonna # scandisco la lista # elimino la colonna dalla riga corrente def elimina_colonna(tabella, nome): for riga in tabella: del riga[nome] def es27(tabella, colonna, valore): N = len(tabella) conteggio = 0 for i in range(N-1, -1, -1): # indici da N-1 a 0 riga = tabella[i] if riga[colonna] != valore: del tabella[i] conteggio += 1 else: del tabella[i][colonna] return conteggio