Een woordenboek maakt het opzoeken van waarden die bij een sleutel horen zeer eenvoudig. In deze oefening
willen we nu voor een gegeven woordenboek de omgekeerde bewerking mogelijk maken, namelijk de sleutels opzoeken
die bij een gegeveven waarde horen. Voor een gegeven woordenboek w
bouwen we daarom een geïnverteerd
woordenboek v
. De sleutels in dit geïnverteerd woordenboek zijn dus de waarden uit w
.
Omdat het niet zeker is dat bij elke sleutel uit w
slechts 1 waarde hoorde, is de omgekeerde relatie van
de afbeelding die w
voorstelt, niet noodzakelijk opnieuw een afbeelding. Stel dat de sleutels a
en b
in w
beiden op de waarde q
afgebeeld worden, dan zullen we dit in het geïnverteerd woordenboek v
opslaan als q -> [a, b]
. Let er hierbij op dat de lijst [a, b]
geordend MOET zijn (anders is de inversie
van het woordenboek niet eenduidig !). Gebruik hiervoor de ingebouwde sort()
functie die een lijst ter plaatse
sorteert via de default-ordening in Python. Indien de sleutel s
in w
op een unieke waarde t
afgebeeld wordt in
w
, dan stockeren we dit als t -> s
in het geïnverteerd woordenboek v
.
inverteer()
met als enig argument een woordenboek, die als resultaat het geïnverteerd
woordenboek oplevert.
inverteer({i:i**2 for i in range(-5, 5)}) = {0: 0, 1: [-1, 1], 4: [-2, 2], 16: [-4, 4], 25: -5, 9: [-3, 3]}