Lexikon#
Under den här fliken kommer vi fördjupa oss i en ny datatyp som heter lexikon. Lexikon används för att lagra mer sofistikerad information än en lista. Exempelvis kan vi ha ett särskilt objekt i en lista (kallad nyckel) och för den nyckeln tilldelar vi olika värden.
Defininera ett lexikon#
Exempelvis om vi skulle göra ett lexikon över en inköpslista så skrivs det på följande sätt.
inköpslista = {'äpplen': 15, 'apelsin': 10, 'banan': 10, 'paprika': 25}
I exemplet ovan skapar vi ett lexikon och tilldelar nyckel och värde. Det finns även andra situationer där vi har olika nycklar som vi vill tilldela fler än ett värde.
Nedan visas ett exempel på hur man kan använda ett lexikon för att hålla reda på olika böcker under olika kategorier.
bibliotek = {'Skräck': ['It', 'Dracula'], 'Drama': ['Frankenstein', 'The Shining'], 'Fantasy': ['The Lord of the Rings', 'The Hobbit']}
I exemplet ovan skapar vi ett lexikon som innehåller olika nycklar, i det här fallet kategorier. Under kategorierna blir det i det här fallet en lista som är värdet som är tilldelat till listan.
Vi vet från tidigare att listor är smidiga att använda för att de är lätta att redigera. Exempelvis att lägga till fler värden, att ta bort ett värde, eller att hitta ett specfikt värde i listan.
Användning av lexikon#
För att exemplifiera hur ett ett lexikon kan användas och varför det är smidigt ska vi ska återkomma till exemplet med vår inköpslista.
Översikt av lexikonet#
Vi börjar med att vilja se alla nycklar vi har i vårt lexikon, då skriver vi följande:
print(inköpslista.keys())
Om vi vill se alla värden för alla nycklar i lexikonet skriver vi:
print(inköpslista.values())
Åtkomst till nycklar och värden#
Säg att vi vill veta se värdet av en nyckel i ett lexikon, då skriver vi på följande sätt:
print(inköpslista['apelsin'])
Ändra värden på nycklar#
Det ger oss apelsin-nyckelns nuvarande värde, vilket är 10. Säg att vi skulle vilja redigera det värdet. Då skriver vi:
inköpslista['apelsin'] = 25
print(inköpslista['apelsin'])
Nu har vi tilldelat värdet på apelsin till 25.
Lägg till fler nycklar#
Vi kan nu välja att vilja lägga till en till nyckel till vårt lexikon. Då skriver vi:
inköpslista['anannas'] = 20
print(inköpslista)
Ta bort nycklar#
Vi kan nu välja att vilja ta bort ett nyckel från lexikonet. Då skriver vi:
inköpslista.pop('banan')
print(inköpslista)
Loopar och lexikon#
Vi kan nu återkomma till exempelvis att vi vill loopa igenom alla nycklar i lexikonet. Då skriver vi:
for nyckel in inköpslista.keys():
print(nyckel)
Om vi vill loopa igenom alla värden i lexikonet skriver vi:
for värde in inköpslista.values():
print(värde)
Övningar till avsnittet#
Övning 7.1#
Skapa ett program som tar in ett lexikon med matvaror och deras kostnad, programmet skriver ut alla priser.
Tips
Använd en for-loop, ta inspiration längre upp på fliken från ”Loopar och lexikon”.
Övning 7.2#
Använd samma lexikon som från övning 7.1 för att skriva ut alla nycklar (matvaror) i lexikonet.
Tips
Använd en for-loop, ta inspiration längre upp på fliken från ”Loopar och lexikon”.
Övning 7.3#
Utgå från följande lexikon:
betyg = {'Anna': A, 'Bengt': C, 'Cecilie': E, 'Dennis': D, 'Erik': B}
Skapa en funktion som tar en nyckel som input och returnerar betyget.
Tips
Kopiera först lexikonet, sedan skapa en funktion som tar en nyckel som input och returnerar betyget.
Övning 7.4#
Utgå från följande lexikon:
resultat = {"Ali": 78, "Bea": 45, "Chen": 62, "Stina": 90, "Erik": 49}
Skapa en funktion som tar en nyckel som input och säger om personen är godkänd på provet, gränsen för att bli godkänd går vid 50 poäng.
Tips
Kopiera först lexikonet, sedan skapa en funktion som tar en nyckel som input, bestäm sedan personens poäng, gör sedan en if- och else-sats för att avgöra om personen är godkänd. Returnera sedan tillbaka om personen är godkänd eller inte.
Övning 7.5#
Utgå från följande lexikon:
försäljning = {"måndag": 1200, "tisdag": 950, "onsdag": 1100, "torsdag": 800, "fredag": 1300}
Skapa en funktion som beräknar hur mycket de har tjänat på sin försäljning på hela veckan.
Tips
Kopiera först lexikonet, sedan skapa en funktion som beräknar hur mycket de har tjänat på sin försäljning på hela veckan. Returnera sedan tillbaka summan.
Övning 7.6#
Utgå från följande lexikon:
lager = {"penna": 10, "sudd": 5, "linjal": 0, "stift": 15}
Skapa en funktion som skriver ut de nycklarna som behöver fyllas på, alltså för varje nyckel som har 0 i lagret.
Tips
Kopiera först lexikonet, sedan skapa en funktion som tar lexikonet som parameter, funktionen tittar sedan på alla värden i lexikonet, om lexikonet har värde 0, skriv ut nyckeln.
Övning 7.7#
Utgå från följande lexikon:
temperaturer = {"måndag": 18, "tisdag": 22, "onsdag": 20, "torsdag": 25, "fredag": 26}
Skapa en funktion som räknar ut hur många dagar temperaturen var mellan 20 grader och 25 grader.
Tips
Kopiera först lexikonet, sedan skapa en funktion som tar lexikonet som parameter, funktionen tittar sedan på alla värden i lexikonet, om lexikonet har värde mellan 20 och 25, spara antalet i en variabel som heter antal_dagar. Returnera sedan tillbaka antal_dagar.
Övning 7.8#
Utgå från följande lexikon:
poäng = {"Anna": 45, "Erik": 60, "Sara": 30, "Bengt": 50}
Skapa en funktion som ger alla personer 5 mer poäng.
Tips
Kopierat först lexikonet, skapa sedan en funktion som tar lexikonet som parameter och byter lägger till 5 poäng, returnera sedan tillbaka lexikonet. Uppgiften är lättast att lösa genom att göra ett nytt lexikon som returneras.
Övning 7.9#
Skapa en funktion som tar en lista med namn som indata och returnerar en dictionary där varje namn är en nyckel och värdet är längden på namnet.
Tips
Tänk på hur du kan iterera över en lista och lägga till nyckel-värde-par i en dictionary. Du kan använda en tom dictionary och fylla på den med dict[key] = value.
Övning 7.10#
Skapa en funktion som tar en lista med ord och returnerar en dictionary där varje ord är en nyckel och värdet är hur många gånger ordet förekommer i listan.
Tips
Använd en dictionary för att hålla reda på antalet förekomster. Du kan använda if key in dict: för att kontrollera om nyckeln redan finns.
Projekt med lexikon#
I det här projektet ska vi skapa ett program som håller reda på filmer och hur dem betygssätts.
Steg 1#
Skapa ett exceldokument med följande struktur:
Film |
Betyg |
|---|---|
The Shawshank Redemption |
9.3 |
The Godfather |
9.2 |
The Dark Knight |
9 |
Pulp Fiction |
8.9 |
Schindler’s List |
8.9 |
The Lord of the Rings |
8.8 |
Steg 2#
Skapa en funktion som tar en excelfil som input och returnerar en dataframe med informationen.
Steg 3#
Skapa en funktion som tar ditt dataframe som sedan skapar ett lexikon med filmnamnen som nycklar och betygen som värden. Funktionen returnerar lexikonet.
Steg 4#
Skapa en funktion som lägger till en ny film till lexikonet.
Steg 5#
Skapa en funktion som hittar det högsta betyget och returnerar vilken film som har det högsta betyget.
Steg 6#
Skapa en funktion som hittar det lägsta betyget och returnerar vilken film som har det lägsta betyget.
Steg 7#
Skapa ett funktion som beräknar medelbetyget och returnerar det.
Steg 8#
Skapa en mainfunktion som du kan använda för att anropa alla olika funktioner.