Как удалить ключ питон

Питон: Как удалить ключ из словаря

Давайте изучим три способа удаления пар ключ-значение из словаря в Python – функция ‘ pop ()`, ключевое слово `del` и диктанты.

Вступление

В этой статье мы рассмотрим как удалить ключи из словарей Python . Это можно сделать с помощью pop()

Извлеките ключ С помощью pop(key,d)

Функция pop(key, d) удаляет ключ из словаря и возвращает его значение. Он принимает два аргумента: ключ удаляется и необязательное значение возвращается, если ключ не найден. Вот пример выскакивания элемента только с требуемым аргументом key :

my_dict = popped_value = my_dict.pop(1) line = "The value removed from the dictionary of the key: 1 is <>" print(line.format(popped_value))

Этот фрагмент возвращает следующие выходные данные:

The value removed from the dictionary of the key: 1 is a

Теперь понаблюдайте, что происходит, когда мы пытаемся удалить несуществующий ключ:

my_dict = popped_value = my_dict.pop(3) line = "The value removed from the dictionary of the key: 3 is <>" print(line.format(popped_value))

Это вызывает KeyError , как и ожидалось, поскольку он не существует:

Traceback (most recent call last): File "", line 1, in KeyError: 3 

Если вы вызовете pop() для ключа, который не существует, Python вернет KeyError . Поэтому используйте pop(key) только в том случае, если вы уверены, что ключ существует в словаре.

Если вы не уверены, существует ли ключ, то поставьте значение для второго необязательного аргумента для pop() – значения по умолчанию. Вместо того, чтобы выбрасывать KeyError , он вернет это значение.

Приведенный выше фрагмент кода можно переписать следующим образом:

my_dict = removed_value = my_dict.pop(3, None) line = "The value removed from the dictionary of the key: 3 is <>" print(line.format(removed_value))

И теперь он не выдает ошибку, когда мы его запускаем:

The value removed from the dictionary of the key: 3 is None

Удалить ключ С помощью del dictКак удалить ключ питон

Другой способ удалить ключ из словаря-это использовать ключевое слово del . Это ключевое слово может удалить любой объект. Он также может удалить пару ключ-значение словаря следующим образом: del dict_nameКак удалить ключ питон :

my_dict = del my_dict[1] line = "The dictionary after deletion is <>" print(line.format(my_dict))

Приведенный выше фрагмент возвращает следующий вывод, обозначая словарь только с опущенным значением(значениями):

Читайте также:  Анимированные кнопки

The dictionary after deletion is

В отличие от pop() , при удалении значение не возвращается. Если вы хотите сохранить существующий ввод словаря, вы можете найти следующий раздел полезным.

Удаление нескольких ключей словаря с помощью Диктантов

Предыдущие методы обновляют словарь на месте, что означает, что пара ключ-значение уничтожается. Если исходный ключ необходимо сохранить, мы можем использовать для этого пользовательскую функцию. В Python общеизвестно, что мы можем использовать понимание списка для создания нового списка на основе существующего. Мы можем сделать то же самое со словарями, используя диктанты.

Таким образом, вместо удаления значений в списке мы можем использовать понимание dict для создания нового словаря с условием, исключающим значения, которые нам не нужны.

Возьмем следующий пример, где мы создаем новый словарь, который не имеет ключа 1 :

my_dict = my_dict2 = line = "The new dictionary is <>" print(line.format(my_dict2))

Этот фрагмент кода генерирует следующие выходные данные, печатая новый словарь:

Обратите внимание, что мы создаем новый словарь, добавляя к использованию памяти нашей программы. Для словарей больших размеров, если мы не исключаем много членов, то мы почти удваиваем память, используемую для этих данных.

Эффективность Функции Бенчмаркинга

До сих пор мы наблюдали три метода. Но какой метод самый быстрый из трех?

Давайте создадим случайный словарь, на котором мы будем тестировать наши методы. Следующая функция gen_random_dict(n) принимает список в качестве аргумента и создает словарь со случайными целыми числами:

import random def gen_random_dict(n): random.seed(0) mydict = <> for i in range(n): nmbr = random.randrange(1, n, 1) mydict[nmbr] = "value "+ str(nmbr) return mydict

В этот же файл давайте добавим некоторые функции, которые удаляют ключ каждым из рассмотренных нами способов:

# Remove a key using pop function def remove_using_pop(dict_input): dict_input.pop(1) return None # Remove a key using del keyword def remove_using_del(dict_input): del dict_input[1] return None # Remove a key using condition def remove_using_condition(dict_input): return

Наконец, добавьте следующий код, который использует модуль timeit , который измеряет время выполнения нашего кода:

import timeit if __name__ == "__main__": func_to_be_tested = "remove_using_pop(gen_random_dict(10000))" setup_stmt = "from __main__ import remove_using_pop, gen_random_dict" runtime1 = timeit.timeit(func_to_be_tested, setup=setup_stmt, number=1) func_to_be_tested = "remove_using_del(gen_random_dict(10000))" setup_stmt = "from __main__ import remove_using_del, gen_random_dict" runtime2 = timeit.timeit(func_to_be_tested, setup=setup_stmt, number=1) func_to_be_tested = "remove_using_condition(gen_random_dict(10000))" setup_stmt = "from __main__ import remove_using_condition, gen_random_dict" runtime3 = timeit.timeit(func_to_be_tested, setup=setup_stmt, number=1) print("Runtime for removing key from Dict:") print("\t1) Using Pop: <>".format(str(runtime1))) print("\t2) Using Del: <>".format(str(runtime2))) print("\t3) Using Condition: <>".format(str(runtime3)))

Хотя результаты могут отличаться на вашем компьютере, шаблон должен быть последовательным. Вот результат, который мы получили после выполнения этого скрипта:

Runtime for removing key from Dict: 1) Using Pop: 0.015606499999194057 2) Using Del: 0.01090950000070734 3) Using Condition: 0.011443700001109391

Использование ключевого слова del имеет преимущество перед остальными методами. Хотя разница во времени, кажется, не очень драматична для небольших словарей. Однако это окажет огромное влияние, когда размер словаря будет большим.

Читайте также:  HTML

Вывод

В этой статье мы изучили три способа удаления пары ключ-значение из словаря – pop () , del и dict. Выбор правильного метода для правильного размера словаря может помочь уменьшить время выполнения скрипта и использование памяти.

Читайте ещё по теме:

Источник

Python: как удалить ключ из словаря

В этой статье мы рассмотрим, как удалить ключи из словарей Python. Это можно сделать с помощью функции pop() , ключевого слова del и создания нового словоря.

Удалить ключ с помощью pop(key, d)

Функция pop(key, d) удаляет ключ из словаря и возвращает его значение. Требуется два аргумента: key — удаляемый ключ и необязательное возвращаемое значение d , если ключ не найден. Вот пример извлечения элемента только с обязательным аргументом key :

my_dict = popped_value = my_dict.pop(1) line = "The value removed from the dictionary of the key: 1 is <>" print(line.format(popped_value)) 

Этот фрагмент кода возвращает следующий результат:

The value removed from the dictionary of the key: 1 is a 

Теперь посмотрим, что происходит, когда мы пытаемся удалить несуществующий ключ:

my_dict = popped_value = my_dict.pop(3) line = "The value removed from the dictionary of the key: 3 is <>" print(line.format(popped_value)) 

Это вызывает KeyError, как и ожидалось, поскольку его не существует:

Traceback (most recent call last): File "", line 1, in KeyError: 3 

Если вы вызовете pop() с ключом, который не существует, Python вернет KeyError . Поэтому используйте pop(key) только в том случае, если вы уверены, что ключ существует в словаре.

Если вы не уверены, существует ли ключ, введите значение для второго необязательного аргумента pop() — значение по умолчанию. Вместо выдачи KeyError он вернет это значение.

Приведенный выше фрагмент можно переписать как:

my_dict = removed_value = my_dict.pop(3, None) line = "The value removed from the dictionary of the key: 3 is <>" print(line.format(removed_value)) 

И теперь он не выдает ошибку при запуске:

The value removed from the dictionary of the key: 3 is None 

Удалить ключ с помощью del dictКак удалить ключ питон

Другой способ удалить ключ из словаря — использовать del ключевое слово. Это ключевое слово может удалить любой объект. Он также может удалить пару ключ-значение словаря следующим образом del dict_nameКак удалить ключ питон :

my_dict = del my_dict[1] line = "The dictionary after deletion is <>" print(line.format(my_dict)) 

Приведенный выше фрагмент возвращает следующий вывод, обозначающий словарь только с оставленными значениями:

The dictionary after deletion is

В отличие от pop() , при удалении значение не возвращается. Если вы хотите сохранить существующий ввод словаря, следующий раздел будет вам полезен.

Читайте также:  Inline button telebot python

Удаление нескольких ключей словаря с помощью создания нового словаря

Предыдущие методы обновляют словарь на месте, что означает, что пара ключ-значение уничтожается. Если исходный ключ необходимо сохранить, мы можем использовать для этого специальную функцию. В Python общеизвестно, что мы можем использовать составные части списков для создания нового списка на основе существующего. Мы можем сделать то же самое со словарями, используя словарные интерпретации.

Поэтому вместо удаления значений в списке мы можем использовать понимание dict для создания нового словаря с условием, исключающим значения, которые нам не нужны.

Рассмотрим следующий пример, в котором мы создаем новый словарь без ключа 1 :

my_dict = my_dict2 = line = "The new dictionary is <>" print(line.format(my_dict2)) 

Этот фрагмент кода генерирует следующий вывод, распечатывая новый словарь:

Обратите внимание, что мы создаем новый словарь, увеличивая использование памяти нашей программой. Для словарей большего размера, если мы не исключаем много членов, мы почти удваиваем объем памяти, используемый для этих данных.

Эффективность подходов выше

До сих пор мы наблюдали три метода. Но какой из трех методов самый быстрый?

Давайте создадим случайный словарь, на котором мы будем тестировать наши методы. Следующая функция gen_random_dict(n) принимает список в качестве аргумента и создает словарь со случайными начальными целыми числами:

import random def gen_random_dict(n): random.seed(0) mydict = <> for i in range(n): nmbr = random.randrange(1, n, 1) mydict[nmbr] = "value "+ str(nmbr) return mydict 

В этот же файл добавим несколько функций, которые удаляют ключ каждым из рассмотренных нами способов:

# Remove a key using pop function def remove_using_pop(dict_input): dict_input.pop(1) return None # Remove a key using del keyword def remove_using_del(dict_input): del dict_input[1] return None # Remove a key using condition def remove_using_condition(dict_input): return

Наконец, добавьте следующий код, который использует модуль timeit , измеряющий время выполнения нашего кода:

import timeit if __name__ == "__main__": func_to_be_tested = "remove_using_pop(gen_random_dict(10000))" setup_stmt = "from __main__ import remove_using_pop, gen_random_dict" runtime1 = timeit.timeit(func_to_be_tested, setup=setup_stmt, number=1) func_to_be_tested = "remove_using_del(gen_random_dict(10000))" setup_stmt = "from __main__ import remove_using_del, gen_random_dict" runtime2 = timeit.timeit(func_to_be_tested, setup=setup_stmt, number=1) func_to_be_tested = "remove_using_condition(gen_random_dict(10000))" setup_stmt = "from __main__ import remove_using_condition, gen_random_dict" runtime3 = timeit.timeit(func_to_be_tested, setup=setup_stmt, number=1) print("Runtime for removing key from Dict:") print("\t1) Using Pop: <>".format(str(runtime1))) print("\t2) Using Del: <>".format(str(runtime2))) print("\t3) Using Condition: <>".format(str(runtime3))) 

Хотя результаты могут отличаться на вашем компьютере, шаблон должен быть последовательным. Вот результат, который мы получили после выполнения этого скрипта:

Runtime for removing key from Dict: 1) Using Pop: 0.015606499999194057 2) Using Del: 0.01090950000070734 3) Using Condition: 0.011443700001109391 

Использование ключевого слова del имеет преимущество перед остальными методами. Хотя для небольших словарей разница во времени не кажется очень большой.

Источник

Оцените статью