In questo articolo discuteremo 6 diversi modi per eliminare una chiave da un dizionario in python cioè
- Rimuovere una chiave da un dizionario usando dict.pop().
- Elimina una chiave da un dizionario usando pop () e prova/except.
- Rimuovi una chiave da un dizionario usando items () & per loop.
- Rimuovi una chiave da un dizionario usando items () & Comprensione del dizionario.
- Rimuovi una chiave da un dizionario usando del.
- Eliminazione di una chiave da un dizionario utilizzando la parola chiave del e prova / except.
Supponiamo di avere un dizionario di string e int cioè
# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}
Ora vogliamo rimuovere un elemento da questo dizionario la cui chiave è “at”. Ci sono diversi modi per farlo. Esploriamoli uno per uno,
Rimuovi una chiave da un dizionario usando dict.pop()
Nella classe dizionario Python fornisce un metodo pop () per eliminare un elemento dal dizionario in base alla chiave cioè
dictionary.pop(key)
- Se la chiave data esiste nel dizionario, allora dict.pop () rimuove l’elemento con la chiave data e restituisce il suo valore.
- Se la chiave data non esiste nel dizionario, restituisce il valore predefinito specificato.
- Se la chiave data non esiste nel dizionario e nessun valore predefinito viene passato a pop (), allora genererà KeyError
Eliminiamo un elemento da dict usando 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)
Uscita:
Deleted item's value = 43Updated Dictionary : {'Hello': 56, 'at': 23, 'test': 43}
Ha cancellato la coppia chiave-valore dal dizionario in cui la chiave era ‘this’ e ha anche restituito il suo valore.
- Python dict.metodo pop() spiegato in dettaglio
- Come rimuovere più chiavi dal dizionario durante l’iterazione?
Elimina una chiave dal dizionario se esiste usando pop()
Il valore predefinito in pop() è necessario, perché se la chiave data non è presente nel dizionario e nessun valore predefinito è dato in pop (), allora genererà keyError. Cancelliamo un elemento che non è presente nel dizionario usando la funzione pop () e senza passare un argomento di valore predefinito in pop () cioè
key_to_be_deleted = 'where'word_freq_dict.pop(key_to_be_deleted)
Errore:
KeyError: 'where'
Se la chiave data nella funzione pop() non è presente nel dizionario e anche il valore predefinito non è fornito, allora pop() può lanciare KeyError. Quindi, per evitare quell’errore, dovremmo sempre verificare se la chiave esiste nel dizionario prima di provare a eliminarla usando la funzione pop () e senza alcun valore predefinito, ad esempio
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')
Output:
Key where is not in the dictionary
Possiamo anche usare try / except per gestire quell’errore,
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')
Uscita:
Key where is not in the dictionary
Rimuovi una chiave da un dizionario usando items ()& for loop
Itera la chiave e filtra la chiave che deve essere eliminata, ovvero
# 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)
Output:
{'Hello': 56, 'test': 43, 'this': 43}
Abbiamo creato un nuovo dizionario temporaneo e poi iterato su tutte le coppie chiave-valore del dizionario originale. Durante l’iterazione abbiamo copiato la coppia chiave-valore nel nuovo dizionario temporaneo solo se la chiave non è uguale alla chiave da eliminare. Una volta terminata l’iterazione, abbiamo copiato i nuovi contenuti del dizionario temporaneo nel dizionario originale. In questo approccio non vi è alcun rischio di KeyError ecc.
Rimuovere una chiave da un dizionario usando gli articoli() & Dizionario di Comprensione
Utilizzando la logica dell’esempio precedente possiamo filtrare il contenuto del dizionario basato su chiave usando gli articoli() & dizionario di comprensione,
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)
Uscita:
{'Hello': 56, 'test': 43, 'this': 43}
Abbiamo ripetuto più le coppie chiave-valore del dizionario e costruito un nuovo dizionario utilizzando il dizionario di comprensione. Ma abbiamo escluso la coppia in cui la chiave corrispondeva alla chiave da eliminare. Quindi abbiamo assegnato questo nuovo dizionario al dizionario originale. Ha dato un effetto che l’elemento dal dizionario viene eliminato in base alla chiave.
Quindi il vantaggio di questo approccio è che non è necessario preoccuparsi dell’errore chiave nel caso in cui la chiave non esista nel dizionario.
Rimuovi una chiave da un dizionario usando del
Possiamo usare l’istruzione del per rimuovere una coppia chiave-valore dal dizionario in base alla chiave,
del dict
Per prima cosa selezionare l’elemento da un dizionario passando la chiave nell’operatore pedice e quindi passarlo all’istruzione del. Se la chiave è presente nel dizionario, eliminerà la chiave e il valore corrispondente dal dizionario. Ma se la chiave data non è presente nel dizionario, genererà un errore, ovvero KeyError.
Usiamolo per rimuovere la chiave dal dizionario sopra menzionato,
# 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)
Uscita:
{'Hello': 56, 'test': 43, 'this': 43}
Ha cancellato l’elemento dal dizionario in cui la chiave era ‘at’. Ma cosa succede se usiamo un’istruzione del con una chiave che non esiste nel dizionario, allora può lanciare KeyError. Ad esempio,
key_to_be_deleted = 'where'del word_freq_dict
Uscita:
KeyError: 'where'
Pertanto, si dovrebbe sempre verificare se la chiave esiste nel dizionario prima di tentare di eliminare utilizzando la parola chiave del per evitare il 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')
Uscita:
Key where is not in the dictionary
Eliminazione di una chiave da un dizionario utilizzo del parola chiave e try/except
Se non si desidera un controllo prima di chiamare canc, quindi possiamo usare il try/except troppo. Proviamo a eliminare una chiave che non esiste nel dizionario e prendiamo anche l’errore usando 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')
Uscita:
Key where is not in the dictionary
Conclusione:
Questi erano i 6 modi diversi per rimuovere una chiave da un dizionario in python.