Gegeven is een CSV-bestand van volgende gedaante:
Sleutel; Data1; Data2; Data3; ...
Deze hoofdingen zijn slechts placeholders: in de echte bestanden komen andere kolomhoofdingen voor,
maar de eerste kolom van het bestand wordt steeds als sleutel geïnterpreteerd.
Het is de bedoeling om dit CSV-bestand in te lezen en om te zetten naar een woordenboek. De sleutels zijn
hierbij de waarden die je in de eerste kolom vindt (je mag aannemen dat deze uniek zijn). Voor elke sleutel
stockeren we de resterende gegevens van de regel opnieuw in een woordenboek. De sleutels in dit laatste woordenboek
zijn de kolomhoofdingen (dus de tekst die de plaats van Data1, Data2, enz. inneemt in het CSV-bestand). De waarden zijn
de stringwaarden die je op die regel en in die kolom terugvindt.
Je construeert dus eigenlijk een "woordenboek-van-woordenboeken". Indien je een waarde wil
terugvinden in dit woordenboek, heb je dus twee sleutels nodig. Stel dat w
het geconstrueerde woordenboek
bevat, dan zal w[sleutel][data]
het gegeven bevatten dat je in het originele CSV-bestand
vindt op de regel met inhoud "sleutel" en op kolom "data". Deze werkwijze maakt het zeer handig om vlot met
gegevens uit een CSV-bestand te werken.
Schrijf een functie lees_records()
met als enig argument de naam van een in te lezen CSV-bestand.
Het resultaat is een woordenboek van woordenboeken zoals hierboven gedefinieerd.
De bestanden die Dodona gebruikt in de testcases vind je in het gecomprimeerde bestand LezenVanRecords.zip1.
Naam;Frans;Biologie;Aardrijkskunde;Fysica;Maatschappelijke Vorming;Nederlands;Informatica;Scheikunde;Wiskunde;Wetenschappelijk Werk;Geschiedenis Verstraete, Yannis;5,0;10,0;5,0;9,0;10,0;18,0;15,0;7,0;14,0;12,0;13,0 Paulussen, Vanya;6,0;7,0;6,0;16,0;8,0;6,0;9,0;13,0;7,0;15,0;7,0 Cornelissen, Renee;5,0;10,0;5,0;11,0;13,0;13,0;5,0;12,0;13,0;8,0;13,0
lees_records('Woordenboek_0_in.csv') = {'Cornelissen, Renee': {'Aardrijkskunde': '5,0', 'Maatschappelijke Vorming': '13,0', 'Informatica': '5,0', 'Scheikunde': '12,0', 'Frans': '5,0', 'Biologie': '10,0', 'Nederlands': '13,0', 'Geschiedenis': '13,0', 'Wetenschappelijk Werk': '8,0', 'Wiskunde': '13,0', 'Fysica': '11,0'}, 'Paulussen, Vanya': {'Aardrijkskunde': '6,0', 'Maatschappelijke Vorming': '8,0', 'Informatica': '9,0', 'Scheikunde': '13,0', 'Frans': '6,0', 'Biologie': '7,0', 'Nederlands': '6,0', 'Geschiedenis': '7,0', 'Wetenschappelijk Werk': '15,0', 'Wiskunde': '7,0', 'Fysica': '16,0'}, 'Verstraete, Yannis': {'Aardrijkskunde': '5,0', 'Maatschappelijke Vorming': '10,0', 'Informatica': '15,0', 'Scheikunde': '7,0', 'Frans': '5,0', 'Biologie': '10,0', 'Nederlands': '18,0', 'Geschiedenis': '13,0', 'Wetenschappelijk Werk': '12,0', 'Wiskunde': '14,0', 'Fysica': '9,0'}}