Een element verwijderen uit een Python-woordenboek

  1. De del verklaring om het Python-woordenboekelement te verwijderen
  2. De dict.pop() functie om het Python-woordenboekelement te verwijderen
  3. Meerdere elementen verwijderen uit een Python-woordenboek
  4. Prestatiekenmerken

Soms bevat uw Python-woordenboek een sleutel of meerdere sleutels die u wilt verwijderen. Je kunt het op verschillende manieren doen.

De del verklaring om het Python-woordenboekelement te verwijderen

Een benadering is om de ingebouwde del verklaring van Python te gebruiken.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['fats']
>>> meal
{'proteins': 10, 'carbohydrates': 80}

Merk op dat als u probeert een element te verwijderen met een sleutel die niet aanwezig is in de dictionary, Python runtime een zal gooien KeyError.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['water']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'water'

De dict.pop() functie om het Python-woordenboekelement te verwijderen

Een andere benadering is om de dict.pop() functie te gebruiken . Het voordeel van deze methode is dat u hiermee de standaardwaarde kunt opgeven die moet worden geretourneerd als de gevraagde sleutel niet in het woordenboek voorkomt.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water', 3000)
3000
>>> meal.pop('fats', 3000)
10
>>> meal
{'proteins': 10, 'carbohydrates': 80} 

Merk op dat als u niet de standaardwaarde opgeeft om terug te keren en de gevraagde sleutel niet bestaat, u ook een runtime-fout krijgt, zoals del hierboven.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'water'

Meerdere elementen verwijderen uit een Python-woordenboek

Als u meerdere elementen in één keer uit een woordenboek moet verwijderen, biedt Python 3 handige lijstbegrippen , die u hiervoor kunt gebruiken.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key) for key in ['fats', 'proteins']]
[10, 10]
>>> meal
{'carbohydrates': 80}

Merk op dat met de bovenstaande aanpak Python nog steeds crasht als een van de ingevoerde sleutels niet in het woordenboek voorkomt. Om dit probleem te omzeilen, kan je een tweede argument opgeven dict.pop() als standaardretourwaarde.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key, None) for key in ['water', 'sugars']]
[None, None]
>>> meal
{'fats': 10, 'proteins': 10, 'carbohydrates': 80}

Prestatiekenmerken

Gebruik del statement en dict.pop() hebben verschillende prestatiekenmerken.

>>> from timeit import timeit
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; del meal['fats']")
0.12977536499965936
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; meal.pop('fats', None)")
0.21620816600079706

Zoals uit de bovenstaande timings volgt, is de del verklaring bijna twee keer zo snel.

Met dict.pop() een fallback-waarde is het echter veiliger omdat het u helpt runtime-fouten te voorkomen.

Gebruik de eerste als u zeker weet dat sleutels aanwezig moeten zijn in het woordenboek, en anders de laatste.

Gerelateerde Artikelen - Python Dictionary

  • Hoe te controleren of een sleutel voorkomt in een woordenboek
  • Alle bestanden van een map ophalen
  • Een bestand en map verwijderen
  • Een woordenboek sorteren op waarde