w tym artykule omówimy 6 różnych sposobów usuwania klucza ze słownika w Pythonie, tj.
- usuwanie klucza ze słownika za pomocą dict.pop().
- Usuń klucz ze słownika za pomocą pop () I try/except.
- Usuń klucz ze słownika za pomocą pętli items() & for.
- Usuń klucz ze słownika za pomocą funkcji items () & rozumienie słownika.
- Usuń klucz ze słownika za pomocą del.
- usuwanie klucza ze słownika za pomocą słowa kluczowego del I try / except.
Załóżmy, że mamy słownik string i int tj.
# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}
teraz chcemy usunąć element z tego słownika, którego kluczem jest „at”. Są na to różne sposoby. Zbadajmy je jeden po drugim,
Usuń klucz ze słownika za pomocą dict.pop()
w Python dictionary Klasa dostarcza metodę pop() do usunięcia elementu ze słownika na podstawie klucza, np.
dictionary.pop(key)
- jeśli podany klucz istnieje w słowniku to dict.pop() usuwa element z podanym kluczem i zwraca jego wartość.
- Jeżeli podany klucz nie istnieje w słowniku, to zwraca podaną wartość domyślną.
- jeśli podany klucz nie istnieje w Słowniku i żadna wartość domyślna nie jest przekazywana do pop (), to wyrzuci KeyError
usuńmy element z dict używając 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)
wyjście:
Deleted item's value = 43Updated Dictionary : {'Hello': 56, 'at': 23, 'test': 43}
usunął on parę klucz-wartość ze słownika, gdzie kluczem było 'this’, a także zwrócił jego wartość.
- Python dict.metoda pop() wyjaśniona szczegółowo
- jak usunąć wiele kluczy ze słownika podczas iteracji?
Usuń klucz ze słownika, jeśli istnieje za pomocą pop ()
domyślna wartość w pop() jest konieczna, ponieważ jeśli podany klucz nie jest obecny w Słowniku i nie podano żadnej wartości domyślnej w pop (), to wyrzuci keyError. Usuńmy element, który nie jest obecny w słowniku za pomocą funkcji pop() i bez przekazywania domyślnego argumentu wartości w pop (), tj.
key_to_be_deleted = 'where'word_freq_dict.pop(key_to_be_deleted)
błąd:
KeyError: 'where'
jeśli podany klucz w funkcji pop() nie jest obecny w słowniku, a także nie jest podana wartość domyślna, to pop() może rzucić KeyError. Aby uniknąć tego błędu, zawsze powinniśmy sprawdzić, czy klucz istnieje w słowniku, zanim spróbujemy go usunąć za pomocą funkcji pop () i bez żadnej wartości domyślnej, np.
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')
wyjście:
Key where is not in the dictionary
możemy również użyć try / except do obsługi tego błędu,
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')
wyjście:
Key where is not in the dictionary
Usuń klucz ze słownika za pomocą items () & dla pętli
Iteruj nad kluczem i filtruj klucz, który ma zostać usunięty, tj.
# 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)
wyjście:
{'Hello': 56, 'test': 43, 'this': 43}
stworzyliśmy nowy słownik tymczasowy, a następnie iterację nad wszystkimi parami klucz-wartość oryginalnego słownika. Podczas iteracji skopiowaliśmy parę klucz-wartość do nowego słownika tymczasowego tylko wtedy, gdy klucz nie jest równy kluczowi, który ma zostać usunięty. Po zakończeniu iteracji skopiowaliśmy nową zawartość słownika tymczasowego do oryginalnego słownika. W tym podejściu nie ma ryzyka wystąpienia KeyError itp.
Usuń klucz ze słownika za pomocą items() & zrozumienie słownika
używając logiki poprzedniego przykładu możemy filtrować zawartość słownika na podstawie klucza za pomocą items() & zrozumienie słownika,
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)
wyjście:
{'Hello': 56, 'test': 43, 'this': 43}
iterowaliśmy na parach klucz-wartość słownika i skonstruowaliśmy nowy słownik przy użyciu rozumienia słownika. Ale wykluczyliśmy parę, w której klucz pasuje do klucza, który ma zostać usunięty. Następnie przypisaliśmy ten nowy słownik do oryginalnego słownika. Dało to efekt, że pozycja ze słownika jest usuwana na podstawie klucza.
dlatego zaletą tego podejścia jest to, że nie musisz się martwić o błąd klucza w przypadku, gdy klucz nie istnieje w słowniku.
Usuń klucz ze słownika używając del
możemy użyć instrukcji del, aby usunąć parę klucz-wartość ze słownika na podstawie klucza,
del dict
najpierw należy wybrać element ze słownika, przekazując klucz w operatorze skryptu dolnego, a następnie przekazać go do instrukcji del. Jeżeli klucz jest obecny w słowniku, wtedy usunie klucz i odpowiadającą mu wartość ze słownika. Jeżeli jednak podany klucz nie jest obecny w słowniku, to spowoduje błąd tzn. KeyError.
użyjmy go do usunięcia klucza ze wspomnianego słownika,
# 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)
wyjście:
{'Hello': 56, 'test': 43, 'this': 43}
usunął element ze słownika, w którym klucz był „at”. Ale co, jeśli użyjemy instrukcji del z kluczem, który nie istnieje w słowniku, to może rzucić KeyError. Na przykład,
key_to_be_deleted = 'where'del word_freq_dict
wyjście:
KeyError: 'where'
dlatego zawsze powinniśmy sprawdzić, czy klucz istnieje w słowniku, zanim spróbujemy go usunąć za pomocą słowa kluczowego del, aby uniknąć błędu 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')
wyjście:
Key where is not in the dictionary
usunięcie klucza ze słownika za pomocą słowa kluczowego del I try / except
jeśli nie chcemy sprawdzać if przed wywołaniem del, wtedy możemy użyć try / except także. Spróbujmy usunąć klucz, który nie istnieje w Słowniku i złapać błąd za pomocą 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')
wyjście:
Key where is not in the dictionary
wniosek:
to były 6 różnych sposobów usuwania klucza ze słownika w Pythonie.