Zum Hauptinhalt springen

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

Mini-QuizWas nutzt DictReader als Schluessel?

DictReader sitzt! Mini-Projekt: Punkteverwaltung CSV.