Trasformatore di dati
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 56 di 56.
La sfida finale: trasforma un dataset in un report riepilogativo. Combina filtraggio, mappatura, raggruppamento, gestione degli errori e definizione di metodi in un unico programma.
Sfida
MedioL'array students è fornito. Ogni elemento è un hash con :id, :grades (un array di numeri interi, che può essere vuoto) e :subjects (un array di stringhe).
Definisci un metodo transform_dataset(students) che restituisca un hash con due chiavi:
:qualified_ids: array ordinato di:iddegli studenti che hanno almeno un voto e i cui voti sono tutti strettamente superiori a70(usaall?).:subject_counts: un hash che associa ogni materia studiata dagli studenti qualificati al numero di studenti qualificati che la studiano.
Se l'array :grades di uno studente è vuoto, lo studente non è qualificato; ignoralo senza segnalarlo.
Poi chiama il metodo e stampa:
- Gli ID degli studenti qualificati uniti con
,, preceduti daQualified:. Se non ce ne sono, stampaQualified: (none). - Una riga per ogni materia (in ordine alfabetico) nel formato
<subject>: <count>.
Per l'array predefinito students, l'output è:
Qualified: S1, S4
biology: 1
history: 1
math: 2
physics: 1Provalo tu
students = [
{ id: "S1", grades: [85, 92, 78], subjects: ["math", "physics"] },
{ id: "S2", grades: [65, 80, 90], subjects: ["math", "biology"] },
{ id: "S3", grades: [], subjects: ["art"] },
{ id: "S4", grades: [88, 95], subjects: ["math", "biology", "history"] },
{ id: "S5", grades: [70, 75], subjects: ["chemistry"] }
]
# TODO: def transform_dataset(students), return { qualified_ids:, subject_counts: }
# TODO: print qualified IDs and subject counts
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di datiEsercitati da solo: Compilatore Ruby online