ta bort en nyckel från ordlistan i Python / Del vs dict.pop () vs förståelse

i den här artikeln kommer vi att diskutera 6 olika sätt att ta bort en nyckel från en ordbok i python, dvs

  • ta bort en nyckel från en ordbok med dict.pop().
  • ta bort en nyckel från en ordlista med pop() och försök/utom.
  • ta bort en nyckel från en ordlista med hjälp av objekt() & för loop.
  • ta bort en nyckel från en ordbok med hjälp av objekt() & Ordboksförståelse.
  • ta bort en nyckel från en ordlista med del.
  • ta bort en nyckel från en ordlista med del keyword och försök/utom.

Antag att vi har en ordlista med sträng och int dvs

# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}

nu vill vi ta bort ett objekt från denna ordlista vars nyckel är ”at”. Det finns olika sätt att göra det. Låt oss utforska dem en efter en,

ta bort en nyckel från en ordbok med dict.pop ()

i Python dictionary klass ger en metod pop() för att ta bort ett objekt från ordlistan baserat på nyckel dvs.

dictionary.pop(key)
  • om den givna nyckeln finns i ordboken dict.pop () tar bort elementet med den angivna nyckeln och returnerar dess värde.
  • om den angivna nyckeln inte finns i ordlistan returnerar den det angivna standardvärdet.
  • om den angivna nyckeln inte finns i ordlistan och inget standardvärde skickas till pop () kommer det att kasta KeyError

Låt oss ta bort ett element från dict med pop(),

key_to_be_deleted = 'this'# As 'this' key is present in dict, so pop() will delete# its entry and return its valueresult = word_freq_dict.pop(key_to_be_deleted, None)print("Deleted item's value = ", result)print("Updated Dictionary :", word_freq_dict)

utgång:

Deleted item's value = 43Updated Dictionary : {'Hello': 56, 'at': 23, 'test': 43}

det raderade nyckelvärdesparet från ordlistan där nyckeln var ’detta’ och returnerade också dess värde.

  • Python dict.pop () – metoden förklaras i detalj
  • Hur tar man bort flera nycklar från ordboken medan man itererar?

ta bort en nyckel från ordlistan om det finns pop ()

standardvärdet i pop() är nödvändigt, för om den angivna nyckeln inte finns i ordlistan och inget standardvärde anges i pop() kommer det att kasta keyError. Låt oss ta bort ett element som inte finns i ordlistan med funktionen pop () och utan att skicka ett standardvärdesargument i pop (), dvs

key_to_be_deleted = 'where'word_freq_dict.pop(key_to_be_deleted)

fel:

KeyError: 'where'

om den angivna nyckeln i pop () – funktionen inte finns i ordlistan och även standardvärdet inte anges, kan pop() kasta KeyError. Så för att undvika det felet bör vi alltid kontrollera om nyckeln finns i ordlistan innan du försöker ta bort den med pop () – funktionen och utan något standardvärde, dvs

key_to_be_deleted = 'where'if key_to_be_deleted in word_freq_dict: word_freq_dict.pop(key_to_be_deleted)else: print(f'Key {key_to_be_deleted} is not in the dictionary')

utgång:

Key where is not in the dictionary

vi kan också använda try / förutom att hantera det felet,

key_to_be_deleted = 'where'try: word_freq_dict.pop(key_to_be_deleted)except KeyError: print(f'Key {key_to_be_deleted} is not in the dictionary')

utgång:

Key where is not in the dictionary

ta bort en nyckel från en ordbok med hjälp av objekt () & för loop

iterera över nyckeln och filtrera nyckeln som måste raderas, dvs

# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}key_to_be_deleted = 'at'new_dict = {}for key, value in word_freq_dict.items(): if key is not key_to_be_deleted: new_dict = valueword_freq_dict = new_dictprint(word_freq_dict)

utgång:

{'Hello': 56, 'test': 43, 'this': 43}

vi skapade en ny tillfällig ordbok och sedan iterera över alla nyckelvärdesparen i den ursprungliga ordlistan. Medan vi itererade kopierade vi nyckelvärdesparet till ny tillfällig ordbok endast om nyckeln inte är lika med nyckeln som ska raderas. När iterationen är över kopierade vi det nya tillfälliga ordboksinnehållet till den ursprungliga ordlistan. I detta tillvägagångssätt finns det ingen risk för KeyError etc.

ta bort en nyckel från en ordbok med hjälp av objekt() & Ordboksförståelse

med hjälp av logiken i föregående exempel kan vi filtrera innehållet i ordboken baserat på nyckel med hjälp av objekt () & ordboksförståelse,

word_freq_dict = {key: value for key, value\ in word_freq_dict.items()\ if key is not key_to_be_deleted}print(word_freq_dict)

utgång:

{'Hello': 56, 'test': 43, 'this': 43}

vi itererade över nyckelvärdesparen i ordboken och konstruerade en ny ordbok med hjälp av ordboksförståelse. Men vi utesluter paret där nyckeln matchade nyckeln till att raderas. Sedan tilldelade vi den här nya ordlistan till den ursprungliga ordlistan. Det gav en effekt som objekt från ordlistan raderas baserat på nyckel.

därför är fördelen med detta tillvägagångssätt att du inte behöver oroa dig för Nyckelfelet om nyckeln inte finns i ordboken.

ta bort en nyckel från en ordbok med del

vi kan använda del-uttalandet för att ta bort ett nyckelvärdespar från ordlistan baserat på nyckeln,

del dict

välj först elementet från en ordlista genom att skicka nyckel i prenumerationsoperatören och sedan skicka det till del-uttalandet. Om nyckeln finns i ordlistan kommer den att ta bort nyckeln och motsvarande värde från ordlistan. Men om den givna nyckeln inte finns i ordlistan kommer den att kasta ett fel, dvs KeyError.

Låt oss använda den för att ta bort nyckeln från ovannämnda ordbok,

# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}# Deleting an item from dictionary using deldel word_freq_dictprint(word_freq_dict)

utgång:

{'Hello': 56, 'test': 43, 'this': 43}

det raderade objektet från ordlistan där nyckeln var ’at’. Men vad händer om vi använder ett del-uttalande med en nyckel som inte finns i ordlistan, då kan det kasta KeyError. Till exempel,

key_to_be_deleted = 'where'del word_freq_dict

utgång:

KeyError: 'where'

därför bör vi alltid kontrollera om nyckeln finns i ordlistan innan vi försöker ta bort dem med del-nyckelordet för att undvika KeyError,

# If key exist in dictionary then delete it using del.key_to_be_deleted = 'where'if key_to_be_deleted in word_freq_dict: del word_freq_dictelse: print(f'Key {key_to_be_deleted} is not in the dictionary')

utgång:

Key where is not in the dictionary

ta bort en nyckel från en ordlista med del keyword och försök/utom

om vi inte vill ha en if-kontroll innan vi ringer del, kan vi använda try/except too. Låt oss försöka ta bort en nyckel som inte finns i ordlistan och fånga felet också med try / except,

# If key exist in dictionary then delete it using del.key_to_be_deleted = 'where'try: del word_freq_dictexcept KeyError: print(f'Key {key_to_be_deleted} is not in the dictionary')

utgång:

Key where is not in the dictionary

slutsats:

dessa var de 6 olika sätten att ta bort en nyckel från en ordbok i python.

Lämna ett svar

Din e-postadress kommer inte publiceras.

Previous post 8 tecken på anorexi athletica – en besatthet med överdriven träning
Next post farorna med examen dumpar