CSV mit Dictionaries
DictReader
import csv
with open("punkte.csv", "r", encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["name"], row["punkte"])
Die Kopfzeile wird zu Schlüsseln. Sehr lesbar!
Auswertung
import csv
rows = []
with open("punkte.csv", "r", encoding="utf-8", newline="") as f:
for row in csv.DictReader(f):
row["punkte"] = int(row["punkte"])
rows.append(row)
beste = max(rows, key=lambda r: r["punkte"])
print("Beste/r:", beste["name"], beste["punkte"])
Rate mal!
Was ist row bei DictReader?
Auflösung
Ein Dict pro Zeile, Keys = Spaltennamen.
Probiere es selbst
Experiment 1
DictReader print keys.
Experiment 2
Durchschnitt berechnen.
Experiment 3
Filter bestanden.
Übungen
Level 1
Alle Namen printen.
Level 2
Max-Punkte.
Level 3
Sortierte Rangliste ausgeben.
Level-2-Lösung
import csv
rows = list(csv.DictReader(open("punkte.csv", encoding="utf-8", newline="")))
# besser with open ...
for r in rows:
r["punkte"] = int(r["punkte"])
print(max(rows, key=lambda r: r["punkte"]))
Mini-Quiz
DictReader sitzt! Mini-Projekt: Punkteverwaltung CSV.