Programmering nivå 2

Kap 2.4 – Dictionaries och tuples

Välj rätt datastruktur när värden behöver namn, ordning eller skydd mot ändring.

Mål med lektionen

När du har arbetat klart med denna lektion ska du:

  • Förstå vad en dictionary och en tuple är.
  • Kunna skapa och använda dictionaries för att lagra nyckel-värde-par.
  • Förstå tuples som fasta, ordnade samlingar av data.
  • Veta när du bör använda dessa strukturer i stället för listor.

Så här lär du dig bäst

Testa varje struktur med olika datatyper och i kombination med loopar och funktioner. Jämför hur det känns att använda listor, dictionaries och tuples i olika situationer. Reflektera över varför vissa datastrukturer är mer lämpliga än andra beroende på sammanhang.

Vad är en dictionary?

En dictionary i Python är en samling av nyckel-värde-par, där varje nyckel är unik. Den används när du vill koppla ett värde till ett specifikt namn eller en identitet.

person = {
    "name": "Anna",
    "age": 25,
    "city": "Stockholm"
}

Åtkomst

print(person["name"])  # Anna

Om du försöker hämta en nyckel som inte finns får du KeyError. När du är osäker kan du använda get() och ange ett standardvärde:

print(person.get("email", "Ingen e-post finns"))

Ändra eller lägga till

person["age"] = 26
person["email"] = "alice@example.com"

Ta bort

del person["city"]

Loopa genom en dictionary

for key, value in person.items():
    print(f"{key}: {value}")

Realistiskt exempel: flera dictionaries i en lista

Ofta använder du dictionaries för objektliknande data och lägger flera sådana dictionaries i en lista.

books = [
    {"title": "Python", "year": 2024},
    {"title": "Webbutveckling", "year": 2023}
]

for book in books:
    print(book["title"])

Interaktiv övning: dictionary steg för steg

Testa att hämta, ändra, lägga till, ta bort och loopa genom en dictionary. Kör ett val i taget och se hur innehållet förändras.

Prova till exempel att:

  • hämta nyckeln name
  • ändra age till 26
  • lägga till nyckeln email
  • ta bort city
  • loopa genom hela dictionaryn med items()
person = { 'name': 'Anna', 'age': 25, 'city': 'Stockholm' }

Programmering 2-koppling: dictionaries passar när varje värde behöver en tydlig nyckel, till exempel persondata, inställningar eller poängtabeller.

Vad är en tuple?

En tuple är en ordnad, oföränderlig samling. Den används när du inte vill att värden ska kunna ändras.

Oföränderlig betyder att du inte kan byta ut, lägga till eller ta bort positioner i tuplen. Om en tuple innehåller ett ändringsbart objekt, till exempel en lista, kan själva listan fortfarande ändras. Det viktiga här är att tuple-strukturen är fast.

coordinates = (10, 20)
print(coordinates[0])  # 10

Tuple-uppackning

Tuple-uppackning betyder att du tar värdena från en tuple och lägger dem i separata variabler på en gång. Antalet variabler måste matcha antalet värden i tuplen.

coordinates = (10, 20)

x, y = coordinates

print(x)  # 10
print(y)  # 20

Det här är samma idé som när en funktion returnerar flera värden:

def get_user():
    return ("Anna", 25)

name, age = get_user()

print(name)  # Anna
print(age)   # 25

Interaktiv övning: tuple

Testa att läsa värden från en tuple och jämför med vad som händer om du försöker ändra den. Tuples är ordnade, men oföränderliga.

Prova till exempel att:

  • läsa index 0 och få första värdet
  • läsa index 1 och få andra värdet
  • packa upp tuplen med x, y = coordinates
  • försöka ändra index 0 och se felmeddelandet
coordinates = (10, 20)

Programmering 2-koppling: tuples passar när värden hör ihop och inte ska ändras, till exempel koordinater eller fasta inställningar.

Tuples används ofta för att returnera flera värden från en funktion. Då kan mottagaren packa upp värdena direkt i tydliga variabler:

def get_user():
    return ("Anna", 25)

name, age = get_user()
print(name)
print(age)

Skillnad mot listor

  • Listor: ändringsbara, alltså mutable.
  • Tuples: fasta, alltså immutable.

Använd en tuple när värdena hör ihop och inte ska bytas ut, till exempel en koordinat (x, y). Använd en dictionary när varje värde behöver ett tydligt namn, till exempel {"name": "Anna", "age": 25}.

Jämförelse: när används vad?

Struktur Egenskaper Använd när du vill...
List Ordnad, ändringsbar Lagra flera värden i en ordning
Dictionary Nyckel-värde-par Knyta namn eller etikett till varje värde
Tuple Ordnad, oföränderlig Lagra en fast uppsättning värden

Öva själv

  1. Skapa en dictionary för en bok med nycklarna title, author och year.
  2. Skriv en funktion som returnerar en tuple med ett namn och en ålder.
  3. Skapa en meny som låter användaren lägga till poster i en dictionary, till exempel användarnamn och poäng.
  4. Skriv ut alla nycklar och värden i en dictionary med hjälp av en for-loop.

När du har försökt själv kan du ladda ner ett lösningsförslag: kap2-4-dictionaries-tuples-losningsforslag.py

Reflektion

  • När känns det bäst att använda en dictionary istället för en lista?
  • Hur påverkar det programlogiken att en tuple inte kan ändras?
  • Vilken struktur tycker du är mest användbar i ett menybaserat program?

Tillbaka till Kapitel 2