In een vorige tutorial sprak ik over een zeer veelzijdig en flexibel objecttype in Python, namelijk lijsten. In dit artikel ga ik verder met mijn vernieuwers met een ander flexibel Python-objecttype genaamd Woordenboeken (ook wel genoemd associatieve matrices of hashes). Net als de lijst is het woordenboek een belangrijk concept om te begrijpen om verder te gaan in je Python-reis.
Als je door de lijsten artikel zal het concept van woordenboeken gemakkelijk te begrijpen zijn. Ze lijken veel op Lijsten, maar met twee belangrijke verschillen:
Elke sleutel in het woordenboek heeft een waarde, die van elk Python-objecttype zou kunnen zijn. Dat wil zeggen, Woordenboeken kunnen worden beschouwd als sleutel waarde paren. Maar wees voorzichtig sleutels kan niet van het type Lijst of Woordenboek zijn.
Zoals we in het vorige gedeelte hebben gezien, is een woordenboek gewoon een ongeordende set sleutel / waarde-paren. Laten we dit concept gebruiken om ons eerste voorbeeld te maken, een Engels-Frans woordenboek. Dit woordenboek kan als volgt worden gemaakt:
english_french = 'paper': 'papier', 'pen': 'stylo', 'car': 'voiture', 'table': 'table', 'door': 'porte'
Het woordenboek Engels Frans
bevat vijf Engelse woorden ingesteld als sleutels met hun Franse betekenissen ingesteld als waarden.
Laten we zeggen dat we wilden weten hoe te zeggen pen
in het Frans. We doen gewoon het volgende:
english_french [ 'pen']
waar je zult komen stylo
als de waarde terugkeerde.
Laten we zeggen dat we een french_spanish
Woordenboek met dezelfde woorden die we hadden in de Engels Frans
Woordenboek, als volgt:
french_spanish = 'papier': 'papel', 'stylo': 'pluma', 'voiture': 'coche', 'table': 'mesa', 'porte': 'puerta'
Nou, je bent gevraagd hoe te zeggen deur-
in het Spaans, en je hebt geen Engels-Spaans woordenboek bij de hand! Maar maak je geen zorgen, er is een oplossing. Raadpleeg uw Engels Frans
Woordenboek voor het woord, gebruik vervolgens het resultaat om het te raadplegen french_spanish
Woordenboek. Heb je gelijk? Laten we eens kijken hoe we dat in Python kunnen doen:
french_spanish [english_french [ 'deur']]
Het resultaat zou moeten zijn puerta
. Is dat niet erg leuk? Je hebt zojuist het woord voor deur-
in het Spaans, hoewel je geen Engels-Spaans woordenboek hebt.
In het vorige voorbeeld hebben we gezien hoe we een woordenboek kunnen maken en items in het woordenboek kunnen openen. Laten we wat meer bewerkingen bekijken die we kunnen maken op Woordenboeken. Ik ga de gebruiken Engels Frans
Woordenboek in de onderstaande voorbeelden.
Met andere woorden, deze bewerking is bedoeld om het aantal sleutel / waarde-paren in het woordenboek te retourneren. Dit kan worden uitgevoerd met behulp van de len ()
operator, als volgt:
len (english_french)
Je zou moeten krijgen 5
teruggekeerd.
De verwijdering van een item in een woordenboek wordt uitgevoerd via de sleutels. Laten we bijvoorbeeld zeggen dat we het woord (sleutel) wilden verwijderen deur-
van het woordenboek. Dit kan eenvoudig als volgt worden gedaan:
del english_french ['door']
Hiermee verwijdert u de sleutel deur-
samen met zijn waarde porte
.
In het vorige subgedeelte hebben we de sleutel deur-
van het woordenboek. Als we willen controleren of deur-
bestaat nog steeds in het woordenboek of niet, we typen:
'deur' in english_french
welke zou moeten terugkeren vals
.
Dus, wat denk je dat de volgende verklaring zal terugkomen? Ga je gang en probeer het eens niet
).
'deur' niet in het Engels
Wat gebeurt er als we proberen toegang te krijgen tot een sleutel dat bestaat niet in een woordenboek? Zeggen english_french [ 'deur']
. In dit geval zou u een foutmelding krijgen die lijkt op het volgende:
Hertraceren (meest recente oproep als laatste)
Bestand "dictionary.py", regel 7, in
print english_french ['door']
KeyError: 'deur'
Mogelijk hebt u een kopiëren van uw Engels Frans
Woordenboek en wijs dat toe aan een ander woordenboek. Dit kan eenvoudig worden gedaan met behulp van de kopiëren()
functie, als volgt:
new_english_french = english_french.copy ()
Zoals we hierboven vermeldden, kunnen waarden in Woordenboeken van elk type zijn, inclusief Woordenboeken. Dit wordt aangeduid als nesting. Een voorbeeld hiervan kan als volgt zijn:
student = 'ID': 'name': 'Abder-Rahman', 'number': '1234'
Dus als je typt student [ 'ID']
, je zou moeten krijgen:
'naam': 'Abder-Rahman', 'nummer': '1234'
Laten we teruggaan naar de Engels Frans
Woordenboek. Er zijn veel manieren waarop u de woorden van de Dictionary kunt herhalen:
for word in english_french:
print woord
Het resultaat van deze verklaring is als volgt:
auto
pen
papier
deur-
tafel
Merk op dat de sleutels in het resultaat worden niet in dezelfde volgorde gegeven als in de Engels Frans
Woordenboek. Je kunt nu zien waarom ik zei dat Woordenboeken als ongeordende sets worden beschouwd.
Een andere manier om door te werken sleutels is als volgt:
for word in english_french.iterkeys ():
print woord
Merk op dat we de iterkeys ()
functie. Een vergelijkbare functie die kan worden gebruikt om de waarden te doorlopen, namelijk itervalues ()
, is als volgt:
voor betekenis in english_french.itervalues ():
betekenis afdrukken
Het resultaat in dit geval zou er ongeveer als volgt uit moeten zien:
voiture
stylo
papier
porte
tafel
Er zijn alternatieve manieren om een woordenboek te maken in Python met behulp van de dict
constructeur. Enkele voorbeelden van het maken van hetzelfde woordenboek ID kaart
gebruik makend van dict
zijn als volgt:
ID = dict (naam = 'Abder-Rahman', nummer = 1234)
ID = dict ([('name', 'Abder-Rahman'), ('number', 1234)])
ID = dict (zip (['name', 'number'], ['Abder-Rahman', 1234])) # sleutels en waarden als lijsten
Er is meer dat je kunt doen met Woordenboeken. Raadpleeg de documentatie van Python voor meer informatie.