Akkurat som vi kan ha lister inni lister, kan vi ha dictionaries inni dictionaries. Eksempel 1 har en dictionary som heter agentbil, der verdiene til nøklene "motordata" og "dekkdata" er egne dictionaries.
Eksempel 1:
agentbil = {
"eier": "James Bond",
"merke": "Aston Martin",
"motordata": {"effekt": 125, "slagvolum": 2.1, "dreiemoment": 225},
"dekkdata": {"bredde": 155, "profil": 70, "felg": 12}
}
I Python Tutor ser det slik ut:

For å referere til en nøkkel i en dictionary inni en dictionary må vi bruke 2 indekser, én for hver dictionary. For eksempel agentbil["dekkdata"]["bredde"] for å finne dekkbredden til agentbil i eksempel 1.
Vi kan også ha dictionaries i lister. Eksempel 2 har ei liste som inneholder dictionaries som kopler postnummer og sted.
Eksempel 2:
postinfo = [
{"nummer": 4225, "navn": "Lyngdal"},
{"nummer": 4586, "navn": "Korshamn"},
{"nummer": 4590, "navn": "Snartemo"},
{"nummer": 4596, "navn": "Eiken"}
]
I Python Tutor ser det slik ut:

For å referere til en nøkkel i en dictionary inni ei liste, må vi bruke 2 indekser, én for lista og én for dictionary. For eksempel vil postinfo[1]["navn"] i eksempel 2 være "Korshamn" fordi element nummer 1 i postinfo inneholder en dictionary med nøkkel-verdi-paret "navn": "Korshamn".
Koden under vil gjennomløpe lista i eksempel 2 og skrive ut informasjon om postnummer og navn.
for sted in postinfo:
print(f"{sted['navn']} har postnummer {sted['nummer']}.")
Vi kan også lister i dictionaries. Eksempel 3 inneholder en dictionary med forfattere som nøkler og lister med boktitler som verdier.
Eksempel 3:
katalog = {
"Knut Hamsun": ["Sult", "Markens grøde", "Victoria"],
"Ernest Hemingway": ["Og solen går sin gang", "Den gamle mannen og havet"],
"Roald Dahl": ["Charlie og sjokoladefabrikken", "Heksene", "Matilda", "SVK"]
}
I Python Tutor ser det slik ut:

For å referere til et element i ei liste inni en dictionary, må vi bruke 2 indekser, én for dictionary og én for lista. For eksempel vil katalog["Roald Dahl"][1] i eksempel 3 være "Heksene" fordi element nummer 1 i lista knyttet til nøkkel "Roald Dahl", inneholder "Heksene".
Koden under vil gjennomløpe lista i eksempel 3 og skrive ut informasjon om forfattere og bøker.
for forfatter, titler in katalog.items():
print(f"{forfatter} har skrevet:", end = " ")
for tittel in titler:
print(f"'{tittel}'", end = " ")
print()
Det er ingen teoretisk grense for hvor mange dictionaries og lister vi kan nøste inni hverandre, men i praksis blir det sjelden bruk for mer enn 2-3 nivåer.
Kilder
-
- Matthes A. (2019). Python Crash Course. no starch press