es26 - Eserciziario Python

MRinaudo (3660 points)
18 40 50
asked Oct 22, 2020 in Eserciziario d'esame by MRinaudo (3,660 points)
recategorized Oct 30, 2020 by andrea.sterbini

Buongiorno a tutti,

in attesa dell'homework, mi sono messo a fare gli esercizi dell'Eserciziario Python.

Mi trovo in difficoltà a capire quello che chiede questo esercizio.

Ho la seguente lista

dati = [ {'C1': 2, 'C2': 1, 'C3': 'd'}, {'C1': 4, 'C2': 7, 'C3': 'a'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 8, 'C2': 3, 'C3': 'c'} ]

eseguo es26(dati, 'C1'), e ottengo:

3 (il numero di colonne)

Con la lista dati che è diventata: 

[ {'C1': 8, 'C2': 1, 'C3': 'd'}, {'C1': 6, 'C2': 7, 'C3': 'a'}, {'C1': 4, 'C2': 1, 'C3': 'b'}, {'C1': 2, 'C2': 3, 'C3': 'c'} ]

Quindi la chiave 'C1'  viene organizzata, in modo decrescente, per ogni dizionario della lista. Praticamente, assegno un valore diverso solo alla chiave data in input alla funzione.

Nonostante ciò, i test non vengono eseguiti con successo da test.py.

Mi rendo conto che questa è materia che daremo tra qualche settimana, ma qualcuno riesce a darmi una mano ?

Grazie mille!

3 Answers

Best answer
Marco Freddi (1420 points)
1 2 16
answered Oct 22, 2020 by Marco Freddi (1,420 points)
selected Oct 30, 2020 by MRinaudo
Se mi scrivi l'errore che ti dà il test è più facile aiutarti.
Se hai già fatto quel test su C1, il problema non dovrebbe essere nè di ordinamento numerico, nè di accesso ai dizionari.
Una cosa che mi viene in mente intanto: hai messo un controllo per fare in modo che rilevi se la colonna sia di numeri, di caratteri (o altro) e si basi su quello per l'ordinamento?
MRinaudo (3660 points)
18 40 50
commented Oct 23, 2020 by MRinaudo (3,660 points)
Ciao Marco,

grazie per la tua risposta.

Qui gli errori ricevuti per entrambi i test:

Il risultato deve essere [{'C1': 8, 'C2': 3, 'C3': 'c'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 4, 'C2': 7, 'C3': 'a'}, {'C1': 2, 'C2': 1, 'C3': 'd'}] invece che [{'C1': 8, 'C2': 1, 'C3': 'd'}, {'C1': 6, 'C2': 7, 'C3': 'a'}, {'C1': 4, 'C2': 1, 'C3': 'b'}, {'C1': 2, 'C2': 3, 'C3': 'c'}]

Il risultato deve essere [{'C1': 2, 'C2': 1, 'C3': 'd'}, {'C1': 8, 'C2': 3, 'C3': 'c'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 4, 'C2': 7, 'C3': 'a'}] invece che [{'C1': 2, 'C2': 1, 'C3': 'd'}, {'C1': 4, 'C2': 7, 'C3': 'c'}, {'C1': 6, 'C2': 1, 'C3': 'b'}, {'C1': 8, 'C2': 3, 'C3': 'a'}].

Io sostanzialmente per l'ordinamento ho usato la funzione sorted(), ma forse sbaglio.

Saluti,

Michelangelo
Marco Freddi (1420 points)
1 2 16
commented Oct 23, 2020 by Marco Freddi (1,420 points)
Da quello che vedo nei 2 test l'ordinamento era rispettivamente su C1 e C3 e infatti su quelle "colonne" hai effettuato l'ordinamento in modo corretto
L'errore che fai risiede nelle differenze tra le altre colonne, tu non ti limiti a operare sugli elementi solo della colonna da ordinare, lasciando gli altri identici, ma in qualche modo sposti anche gli altri, a coppie, se confronti i risultati.
Penso che il problema sia che per ordinare una certa colonna, effettui qualche operazione che cambia posizione ai dizionari, potrebbe essere perchè applichi il sorted() alla lista, invece di analizzare la singola colonna e scambiarne gli elementi tra i dizionari (che così manterranno sempre la posizione iniziale).

Spero di essere riuscito ad aiutarti, se ti servisse altro, richiedi pure.
Loriv3 (7970 points)
8 20 84
answered Oct 22, 2020 by Loriv3 (7,970 points)
Tipo dell'errore che dice quando si conclude il test?
MRinaudo (3660 points)
18 40 50
commented Oct 23, 2020 by MRinaudo (3,660 points)
Ciao,

ho inserito gli errori nel post di sopra.

Grazie.

Saluti,

Michelangelo
giordano_sannino (13650 points)
7 16 81
answered Oct 23, 2020 by giordano_sannino (13,650 points)
confermerei quello che ha commentato il mio collega