Python: controleren of een sleutel (of waarde) bestaat in een woordenboek (5 eenvoudige manieren) • datagy (2024)

In deze zelfstudie leert u hoe u Python kunt gebruiken om te controleren of een sleutel in een woordenboek bestaat. U leert ook hoe u kunt controleren of een waarde in een woordenboek voorkomt. U leert hoe u dit doet met behulp van deinexploitant, de.krijgen()methode, deheeft_sleutel()functie, en de.toetsen()En.waarden()methoden.

Weten hoe te werken met Python-woordenboeken is een belangrijke vaardigheid. Dit kan met name handig zijn bij het werken met web-API's die JSON-gegevens retourneren.

Hoewel we een woordenboek gemakkelijk kunnen indexeren, als er geen sleutel bestaat, aSleutelfoutzal worden gegooid. Dit zal enkele aanzienlijke problemen in uw programma veroorzaken, tenzij deze fouten worden afgehandeld.

Een veel veiliger alternatief voor het gebruik van woordenboekindexering is om eerst te controleren of een bepaalde sleutel in een woordenboek voorkomt. Laten we beginnen met leren!

Het snelle antwoord: gebruikenin om te zien of er een sleutel bestaat

Python: Check if a Key (or Value) Exists in a Dictionary (5 Easy Ways) • datagy (1)

Inhoudsopgave

Wat is een Python-woordenboek?

Woordenboeken in Python zijn een van de belangrijkste, ingebouwde datastructuren. Ze bestaan ​​uitsleutel waardeparen die het vinden van een itemwaarde gemakkelijk maken, als u de bijbehorende sleutel kent. Een van de unieke kenmerken van een woordenboek is dat sleutels uniek moeten zijn, maar dat waarden kunnen worden gedupliceerd.

Laten we eens kijken hoe woordenboeken eruit zien in Python. Ze zijn gemaakt met behulp van{}accolades en desleutel waardeparen worden gescheiden door komma's.

Laten we een woordenboek maken met de naamleeftijden, die, nou ja, de leeftijden van verschillende mensen bevat:

leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

Een manier waarop u vaak wordt geleerd om toegang te krijgen tot een woordenboekwaarde, is door indexering te gebruiken via de[]vierkante haak toegang. In het volgende gedeelte ziet u hoe woordenboekindexering werkt en waarom dit niet altijd de beste optie is. Daarna leer je verschillende methoden om ervoor te zorgen dat een sleutel bestaat.

Het probleem met het indexeren van een Python-woordenboek

Het indexeren van een woordenboek is een gemakkelijke manier om de waarde van een woordenboeksleutel te krijgen - als de gegeven sleutel in het woordenboek voorkomt. Laten we eens kijken hoe woordenboekindexering werkt. We gebruiken woordenboekindexering om de waarde voor de sleutel te krijgenNikuit ons woordenboekleeftijden:

>>> leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}>>> print(leeftijden[' Nik'])31

We kunnen hier zien dat dit prachtig werkte. Dat gezegd hebbende, laten we eens kijken of we proberen de waarde voor de sleutel te krijgenJill, die niet bestaat in het woordenboek:

>>> leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}>>> print(leeftijden[' Jill'])KeyError: 'Jill'

We kunnen hier zien dat als we proberen toegang te krijgen tot de waarde van een woordenboek voor een sleutel die niet bestaat, dat aSleutelfoutwordt gegooid. Dit heeft een aantal enorme implicaties voor uw code. Tenzij de fout expliciet wordt afgehandeld, zal het programma mislukken. Een manier om aSleutelfoutis om ervoor te zorgen dat een sleutel daadwerkelijk bestaat in een Python-woordenboek.

Dat is precies wat u in de volgende paragrafen zult leren. Laten we beginnen!

Gebruik Python om te controleren of er een sleutel bestaat: Methode voor Python-sleutels

Python-woordenboek wordt geleverd met een ingebouwde methode waarmee we een lijstachtig object kunnen genereren dat alle sleutels in een woordenboek bevat. Gemakshalve heet dit de.toetsen()methode.

Uitprintendict.toetsen()het lijkt hierop:

print(ages.keys())# Geeft als resultaat: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])

We kunnen zien hoe dat eruit ziet als een beetje op een lijst. We kunnen nu controleren of er een sleutel bestaat in dat lijstachtige object!

Laten we eens kijken hoe we de.toetsen()methode om te zien of een sleutel bestaat in een woordenboek. Laten we deze methode gebruiken om te kijken of er een sleutel bestaat:

# Controleer of een sleutel bestaat in een Python-woordenboek door alle keyages te controleren = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}een_sleutel = 'James' als een_sleutel in leeftijden.sleutels(): print('Sleutel bestaat')else: print('Sleutel bestaat niet')# Returns Sleutel bestaat niet

We kunnen hier zien dat we controleren of een verstrekte sleutel,een_sleutel, bestaat in de sleutels van ons woordenboek. In dit geval bestond de sleutel niet en werd het programma afgedruktSleutel bestaat niet.

In het volgende gedeelte leer je hoe je dit nog verder kunt vereenvoudigen!

Gebruik Python om te controleren of er een sleutel bestaat: Python in Operator

De bovenstaande methode werkt goed, maar we kunnen het controleren of een bepaalde sleutel in een Python-woordenboek voorkomt nog verder vereenvoudigen. We kunnen de.toetsen()methode volledig, en met behulp van deinoperator scant alle sleutels in een woordenboek.

Laten we eens kijken hoe dit in de praktijk werkt:

leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}some_key = 'Nik'if some_key in leeftijden: print ('Sleutel bestaat')else: print('Sleutel bestaat niet')# Geeft terug: Sleutel bestaat

We kunnen hier zien dat onze methode eigenlijk erg lijkt op het bovenstaande, maar we hebben de.toetsen()methode helemaal! Dit helpt de code eigenlijk een beetje meer gewone taal te lezen.

in het volgende gedeelte leer je hoe je de waarde van een sleutel daadwerkelijk kunt ophalen, zelfs als een sleutel niet bestaat!

Bekijk een anderePython-tutorialsop datagy, inclusief onzecomplete gids voor het stylen van panda'sen onzeuitgebreid overzicht van draaitabellen in Panda's!

Gebruik de .get-methode om te controleren of een sleutel bestaat in een Python-woordenboek

Werken met woordenboeken in Python omvat over het algemeen het verkrijgen van de waarde van een sleutel - niet alleen controleren of deze bestaat. Je hebt eerder geleerd dat het simpelweg indexeren van het woordenboek eenSleutelfoutals er geen sleutel bestaat. Hoe kunnen we dit veilig doen, zonder het programma te onderbreken?

Het antwoord hierop is om de Python te gebruiken.krijgen()methode. De.krijgen()methode zal gewoon terugkerenGeenals er geen sleutel bestaat. Laten we dit eens proberen:

leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}print(ages.get('Jack')) print(ages.get('Jill'))# Geeft als resultaat:# 43# Geen

We kunnen hier zien dat wanneer de.krijgen()methode wordt toegepast om een ​​bestaande sleutel te retourneren, wordt de waarde van die sleutel correct geretourneerd. Als een sleutel niet bestaat, blijft het programma draaien, maar keert het terugGeen.

Wat vooral handig is aan de Python.krijgen()methode, is dat het ons in staat stelt een waarde terug te geven, zelfs als er geen sleutel bestaat.

Stel dat we wilden dat ons programma ons liet weten dat er geen sleutel bestond. We zouden het kunnen vragen aan de.krijgen()methode om "Sleutel bestaat niet!" terug te geven.

Laten we eens kijken hoe we dit kunnen doen:

leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}print(ages.get('Jill', " De sleutel bestaat niet"))# Retourneert: "De sleutel bestaat niet!"

De.krijgen()methode is een geweldige en veilige manier om te zien of een sleutel bestaat in een Python-woordenboek. Laten we nu eens kijken of een bepaalde waarde al dan niet bestaat in een Python-woordenboek.

Controleer of er een waarde bestaat in een Python-woordenboek met behulp van .values()

Vergelijkbaar met het Python-woordenboek.toetsen()methode, woordenboeken hebben een corresponderende.waarden()methode, die een lijstachtig object retourneert voor alle waarden in een woordenboek.

Laten we eens kijken hoe we toegang kunnen krijgen tot alle waarden van een woordenboek:

leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}print(ages.values())#Returns: dict_values([30, 29, 31, 43, 32, 38])

We kunnen dit gebruiken om te zien of een waarde al dan niet bestaat. Stel dat we wilden weten of de leeftijd 27 in ons woordenboek voorkomt, dan zouden we het volgende kunnen schrijven:

leeftijden = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}some_age = 27if some_age in leeftijden.values(): print('Leeftijd bestaat!')else: print("Leeftijd bestaat niet!")# Geeft terug: Leeftijd bestaat niet!

Wat als we nu de sleutel of sleutels voor een bepaalde waarde willen retourneren. We kunnen dit veilig doen met behulp van een lijstbegrip, dat drie permutaties zal hebben:

  1. Wees een lege lijst, als de waarde niet bestaat,
  2. Heb één item, als de waarde eenmaal bestaat
  3. Heb meer dan één item, als de waarde meer dan eens bestaat

Laten we een enigszins aangepast woordenboek gebruiken om dit in actie te zien:

# Alle sleutels van een bepaalde waarde in een Python-woordenboek krijgen = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Jill': 43, 'Alison': 32, 'Kevin': 38}value_43 = [sleutel voor sleutel, waarde in leeftijden.items() als waarde == 43]print(value_43)# Geeft terug: ['Jack', 'Jill']

We hebben een lijstbegrip gemaakt dat elke sleutel optelt, als de waarde van die sleutel gelijk is aan 43.

Wat zijn Python-lijstbegrippen?Ga naar voor meer informatie over lijstbegrippenmijn uitgebreide tutorial hieren mijn uitgebreide video hieronder!

Conclusie

In dit bericht heb je geleerd hoe je kunt controleren of een sleutel bestaat in een Python-woordenboek. Je hebt geleerd hoe je dit doet met de.toetsen()methode, deinexploitant, en de.krijgen()methode. Je hebt ook geleerd hoe je kunt zien of een bepaalde waarde bestaat in een Python-woordenboek en hoe je de sleutel(s) van die waarde kunt krijgen.

Voor meer informatie over woordenboeken in Python, bekijk deofficiële documentatie hier.

Python: controleren of een sleutel (of waarde) bestaat in een woordenboek (5 eenvoudige manieren) • datagy (2024)

References

Top Articles
Latest Posts
Article information

Author: Greg O'Connell

Last Updated:

Views: 6080

Rating: 4.1 / 5 (42 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Greg O'Connell

Birthday: 1992-01-10

Address: Suite 517 2436 Jefferey Pass, Shanitaside, UT 27519

Phone: +2614651609714

Job: Education Developer

Hobby: Cooking, Gambling, Pottery, Shooting, Baseball, Singing, Snowboarding

Introduction: My name is Greg O'Connell, I am a delightful, colorful, talented, kind, lively, modern, tender person who loves writing and wants to share my knowledge and understanding with you.