Dictionaries

Dictionaries er en liste der laves af par. Herunder har jeg lavet en dictionary bestående af brugerens navn og login.

  • Anne Hansen: ah
  • Bent Ipsen: bi
  • Cecilie Jensen: cj

I python vil det ud som herunder:

bruger_id = {
    "Anne Hansen": "ah",
    "Bent Ipsen" : "bi",
    "Cecilie Jensen" : "cj"
    }

Hvert element har altså en nøgle (f.eks. Anne Hansen) og en værdi (ah)

Efter du har kørt programmet, kan du udskrive listen:

>>> bruger_id
{'Anne Hansen': 'ah', 'Bent Ipsen': 'bi', 'Cecilie Jensen': 'cj'}

Udskriv et dictionary

Der findes 3 måder det kan gøres på:

Nøgler + værdier
>>> bruger_id
{'Anne Hansen': 'ah', 'Bent Ipsen': 'bi', 'Cecilie Jensen': 'cj'}
Kun nøgler

Her skal du tilføje .keys()

>>> bruger_id.keys()
dict_keys(['Anne Hansen', 'Bent Ipsen', 'Cecilie Jensen'])
Kun værdier

Her skal du tilføje .values()

>>> bruger_id.values()
dict_values(['ah', 'bi', 'cj'])

Udskriv enkelt element

For at udskrive en værdi, skal du bruge nøglen. Vil du have udskrivet Anne Hansens login, skal du skrive følgende:

>>> bruger_id["Anne Hansen"]
'ah'

Tilføj element

For at tilføje brugeren Dennis Karlsen med brugernavnet dk skriver du:

>>> bruger_id["Dennis Karlsen"] = "dk"
>>> bruger_id
{'Anne Hansen': 'ah', 'Bent Ipsen': 'bi', 'Cecilie Jensen': 'cj', 'Dennis Karlsen': 'dk'}

Ændr element

Du kan ændre et element på 2 måder. Her ændres Dennis Karlsens brugernavn til ddkk

Metode 1

>>> bruger_id["Dennis Karlsen"]
'dk'
>>> bruger_id["Dennis Karlsen"] = "ddkk"
>>> bruger_id["Dennis Karlsen"]
'ddkk'

Metode 2

Her ændrer vi tilbage igen ved hjælp af .update():

>>> bruger_id.update({"Dennis Karlsen":"dk"})
>>> bruger_id["Dennis Karlsen"]
'dk'

Læg mærke til den krøllede parentes om ændringen.

Fjern element

For at fjerne et element bruger vi del. Her fjerne vi Dennis karlsen

>>> del bruger_id["Dennis Karlsen"]
>>> bruger_id
{'Anne Hansen': 'ah', 'Bent Ipsen': 'bi', 'Cecilie Jensen': 'cj'}

Ligesom ved lister, tuplets og sets, kan du anvende .pop() eller .popitem(), hvis du vil bruge bruge output. Forskellen mellem de to er, at .pop() fjerner en bestemt nøgle og .popitem() fjerner den sidste:

>>> bruger_id.pop("Cecilie Jensen")
'cj'
>>> bruger_id
{'Anne Hansen': 'ah', 'Bent Ipsen': 'bi'}
>>> bruger_id.popitem()
('Bent Ipsen', 'bi')
>>> bruger_id
{'Anne Hansen': 'ah'}

Slet dictionary

For at slette et dictionary bruges du del uden at skrive elementet:

>>> del bruger_id
>>> bruger_id.popitem()
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
NameError: name 'bruger_id' is not defined

Kopier dictionary

Vi indlæser lige den oprindelige dictionary igen:

bruger_id = {
    "Anne Hansen": "ah",
    "Bent Ipsen" : "bi",
    "Cecilie Jensen" : "cj",
    }

For at kopiere en dictionary bruger du .copy()

>>> kopi_af_bruger_id = bruger_id.copy()
>>> kopi_af_bruger_id
{'Anne Hansen': 'ah', 'Bent Ipsen': 'bi', 'Cecilie Jensen': 'cj'}

Antal elementer i et dictionary

For at finde antal af elementer i vores dictionary bruger vi .len()

>>> len(bruger_id)
3

Er et element i et dictionary

>>> "Anne Hansen" in bruger_id
True

Vil du vide om en bestem værdi findes i et dictionary, skal du bruge .values()

>>> "ah" in bruger_id.values()
True

Kør igennem hele dictionary

For at køre et dictionary som et loop kan du gøre følgende:

Udskriv både og værdi
bruger_id = {
    "Anne Hansen": "ah",
    "Bent Ipsen" : "bi",
    "Cecilie Jensen" : "cj",
    }

for brugernavn, login in bruger_id.items():
    print(f"{brugernavn} : {login}")
Anne Hansen : ah
Bent Ipsen : bi
Cecilie Jensen : cj
Udskriv nøgle
bruger_id = {
    "Anne Hansen": "ah",
    "Bent Ipsen" : "bi",
    "Cecilie Jensen" : "cj",
    }

for key in bruger_id.keys():
    print(key)
Anne Hansen
Bent Ipsen
Cecilie Jensen
bruger_id = {
    "Anne Hansen": "ah",
    "Bent Ipsen" : "bi",
    "Cecilie Jensen" : "cj",
    }

for value in bruger_id.values():
    print(value)
ah
bi
cj

Nested (indlejrede) directories

Nogle gange er en nøgleværdi ikke nok se f.eks. dette eksempel

Ansat1
  • Navn: Anne Hansen
  • Brugernavn: ah
Ansat2
  • Navn: Bent Ipsen
  • Brugernavn: bi
Ansat3
  • Navn: Cecilie Jensen
  • Brugernavn: cj

Det vil vi i Python skrive på følgende måde:

ansatte = {
    "ansat1" : {
        "Navn": "Anne Hansen",
        "Brugernavn" : "ah",
        },
    "ansat2" : {
        "Navn": "Bent Ipsen",
        "Brugernavn" : "bi",
        },
    "ansat3" : {
        "Navn": "Cecilie Jensen",
        "Brugernavn" : "cj",
        }
    }

Vi laver en dictionary ... i vores dictionary.

Måden vi rammer de enkelte elementer er på følgende måde:

>>> ansatte["ansat1"]["Navn"]
'Anne Hansen'

Vi går ind i ansatte, fremsøger ansat1 og viser Navn

Herunder er vist hvordan du manipulerer med nestede dictionaries.

Tilføj nested element

>>> ansatte["ansat4"] = {"Navn":"Dennis Karlsen","Brugernavn":"dk"}
>>> ansatte
{'ansat1': {'Navn': 'Anne Hansen', 'Brugernavn': 'ah'}, 'ansat2': {'Navn': 'Bent Ipsen', 'Brugernavn': 'bi'}, 'ansat3': {'Navn': 'Cecilie Jensen', 'Brugernavn': 'cj'}, 'ansat4': {'Navn': 'Dennis Karlsen', 'Brugernavn': 'dk'}}

Ændre nested element

>>> ansatte["ansat4"]["Brugernavn"] = "ddkk"
>>> ansatte["ansat4"]
{'Navn': 'Dennis Karlsen', 'Brugernavn': 'ddkk'}

Fjern nested element

>>> del ansatte["ansat4"]
>>> ansatte
{'ansat1': {'Navn': 'Anne Hansen', 'Brugernavn': 'ah'}, 'ansat2': {'Navn': 'Bent Ipsen', 'Brugernavn': 'bi'}, 'ansat3': {'Navn': 'Cecilie Jensen', 'Brugernavn': 'cj'}}

Loop igennem nested dictionary

Du skal bruge samme metode som ved almindelige dictionaries. Her har jeg først lavet variabler af indholdet, for at gøre det lettere at se hvad der sker i printsætningen.

ansatte = {
    "ansat1" : {
        "Navn": "Anne Hansen",
        "Brugernavn" : "ah",
        },
    "ansat2" : {
        "Navn": "Bent Ipsen",
        "Brugernavn" : "bi",
        },
    "ansat3" : {
        "Navn": "Cecilie Jensen",
        "Brugernavn" : "cj",
        }
    }

for i in ansatte:
    
    navn = ansatte[i]["Navn"]
    login = ansatte[i]["Brugernavn"]

    print(f"{i} - {navn} : {login}")
ansat1 - Anne Hansen : ah
ansat2 - Bent Ipsen : bi
ansat3 - Cecilie Jensen : cj

Opgaver

Lav et login ved hjælp af en dicionary

Opret en dicionary med dig selv som bruger og opret en adgangskode. Lav en if/else struktur hvor du:

  1. undersøger om brugeren findes
  2. om adgangskoden er korrekt
  3. Hvis brugeren kan godkendes printes: Velkommen *brugernavn*
  4. Hvis ikke: Du har ikke adgang

Lav en valutaomregner

Lav en valutaomregnder ved hjælp af en dictionary funktionen valuta(a,b), hvor a er valutaen og b er beløbet.