Du overskriver i stedet for å samle

Handler om: Ordbok (dict)

Når du skal samle flere verdier under samme nøkkel, skriver du d[nøkkel] = verdi i stedet for å legge til i en liste. Da erstatter hver ny verdi den forrige, og til slutt står bare den siste igjen under hver nøkkel. Det krasjer ikke — du får et svar som ser riktig ut, men som har mistet data.

Eksempel

Du grupperer elever etter transportmiddel. Ada og Liv tar begge bussen, men til slutt står {'buss': 'Liv'} — Ada ble skrevet over, uten en eneste feilmelding.

Slik tenker du riktig om det

Skill «sett verdien» fra «legg til i verdien». `=` bytter ut det som lå der; `.append(...)` lar det ligge og legger en til. Skal nøkkelen holde FLERE ting, må verdien være en liste — og da må lista finnes før du kan legge noe i den.

Slik ser det ut i kode

Slik gikk det galt

grupper = {}
for navn, transport in reiser:
    grupper[transport] = navn      # erstatter den forrige

Slik fikser du det

grupper = {}
for navn, transport in reiser:
    if transport not in grupper:
        grupper[transport] = []    # lag lista foerst
    grupper[transport].append(navn)

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala