Gå till innehållet

Ordböcker (dict) i Python

En ordbok (dictionary) sparar par: nyckel → värde. Tänk lådor med etiketter.

Mål

  • Skapa och läsa ordböcker
  • Lägga till/ändra/ta bort poster
  • Loopa över nycklar och värden
Python
person = {
  "namn": "Ava",
  "ålder": 13,
  "stad": "Uppsala",
}
print(person["namn"])        # Ava
person["husdjur"] = "katt"  # lägg till
person["ålder"] += 1         # ändra
print("nycklar:", list(person.keys()))
print("värden:", list(person.values()))

Slå upp säkert

Python
husdjur = person.get("husdjur", "inga")  # standardvärde
print("husdjur:", husdjur)

Loopa

Python
for nyckel, värde in person.items():
    print(nyckel, "→", värde)

Övningar

1) Skapa en ordbok spelare med namn, level och hp. Öka level med 1 och skriv allt. 2) Skapa en telefonbok (dict) och låt användaren slå upp nummer på namn. 3) Poängtavla: håll ett dict med poäng för tre spelare, uppdatera en vald spelare.


Små steg – skapa, läsa, ändra

Python
1
2
3
4
5
poäng = {"Ava": 3, "Noah": 1}
poäng["Noah"] += 2
poäng["Mio"] = 5
print(poäng["Ava"])     # 3
print(poäng.get("Eli", 0))  # 0 (finns ej)

Loop över nycklar och värden:

Python
for namn, p in poäng.items():
  print(namn, "→", p)

Mini-projekt 1: Telefonbok med sök

Låt användaren lägga till namn→nummer och söka efter nummer med namn. Tills tomt namn.

Mini-projekt 2: Poängtavla för spel

Håll en poängtavla: välj en spelare och öka dennes poäng. Skriv tavlan efter varje ändring.

Felsökning

  • KeyError: använd get() när du inte är säker på att nyckeln finns.
  • Blandning av str och int: konvertera inmatning (int()) när du räknar.

Vanliga dict-metoder (snabbguide)

Python
1
2
3
4
5
6
7
8
9
person = {"namn": "Ava", "stad": "Uppsala"}
nycklar = list(person.keys())      # ["namn", "stad"]
värden = list(person.values())     # ["Ava", "Uppsala"]
par = list(person.items())         # [("namn","Ava"), ("stad","Uppsala")]

person.update({"ålder": 13})      # lägg till/förändra flera nycklar
ålder = person.get("ålder", 0)     # 13, eller 0 om saknas
person.setdefault("husdjur", "katt")  # sätt om nyckeln saknas
bort = person.pop("stad", None)    # ta bort och få värdet (eller None)

Micro-övningar: - Bygg upp en profil med setdefault och uppdatera fält med update. - Gå igenom items() och skriv “nyckel: värde” på varje rad.

Hitta felen! (5 fel)

Koden ska uppdatera en poängtavla och skriva ut den. Rätta fem fel.

Python
1
2
3
4
5
6
7
poäng = {"Ava": 3, "Noah": 1}
poäng["Mio"] = poäng["Mio"] + 2
poäng.update([("Eli", 4)])
ökning = input("Öka Ava med: ")
poäng["Ava"] = poäng["Ava"] + ökning
for namn, p in poäng:
  print(namn, "→", p)

Facit

Python
poäng = {"Ava": 3, "Noah": 1}

# Fix 1: Hantera saknad nyckel när du uppdaterar
poäng["Mio"] = poäng.get("Mio", 0) + 2

# Fix 2: update kan ta en dict direkt (renare)
poäng.update({"Eli": 4})

# Fix 3: Omvandla inmatningen till int
ökning = int(input("Öka Ava med: "))

# Fix 4: Blanda inte sträng och int
poäng["Ava"] = poäng["Ava"] + ökning

# Fix 5: Iterera över .items() för att få både namn och poäng
for namn, p in poäng.items():
  print(namn, "→", p)