Меню Закрыть

Проверить есть ли ключ в словаре python

Содержание

Если есть такой ключ в словаре, возвращает True

Если нет такого ключа в словаре, возвращает False

1 ответ 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python-3.x или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

2454 Mohan Gulati [2009-10-21 22:05:00]

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

Я думаю, что это не лучший способ выполнить эту задачу. Есть ли лучший способ проверить ключ в словаре?

20 ответов

2500 Решение Chris B. [2009-10-21 22:10:00]

in — это предполагаемый способ проверки наличия ключа в dict .

Если вы хотите по умолчанию, вы всегда можете использовать dict.get() :

. и если вы хотите всегда обеспечить значение по умолчанию для любого ключа, вы можете использовать defaultdict из модуля collections , например:

. но в целом ключевое слово in — лучший способ сделать это.

1208 Jason Baker [2009-10-21 22:06:00]

Вам не нужно вызывать ключи:

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

Вы можете проверить наличие ключа в словаре, используя ключевое слово in:

Обычно для проверки наличия ключа в словаре перед его изменением является инициализация значения по умолчанию (например, если ваши значения являются списками, например, и вы хотите убедиться, что существует пустой список, к которому вы можете добавить при вставке первого значения для ключа). В таких случаях вы можете найти collections.defaultdict() , чтобы представлять интерес.

В более раннем коде вы также можете найти некоторые применения has_key() , устаревшего метода проверки наличия ключей в словарях (просто используйте key_name in dict_name , вместо этого).

Вы можете сократить это:

Однако это в лучшем случае косметическое улучшение. Почему вы считаете, что это не лучший способ?

Вместо этого я рекомендовал бы использовать метод setdefault . Похоже, он сделает все, что вам нужно.

38 Wtower [2015-05-29 14:06:00]

Дополнительная информация о скорости выполнения предложенных методов ответа (10-метровые петли):

  • ‘key’ in mydict прошедшее время 1.07 сек
  • mydict.get(‘key’) прошедшее время 1,84 с
  • mydefaultdict[‘key’] прошедшее время 1.07 сек

Поэтому использование in или defaultdict рекомендуется для get .

33 mafonya [2017-03-01 12:03:00]

Словарь в python имеет метод get (‘key’, default). Таким образом, вы можете просто установить значение по умолчанию, если нет ключа.

Как насчет использования EAFP (проще просить прощения, чем разрешения):

Смотрите другие SO сообщения:

20 Charitoo [2017-08-19 01:58:00]

Используя тернарный оператор:

17 Debabrata [2015-09-10 21:37:00]

Для проверки вы можете использовать метод has_key()

Если вы хотите получить значение, вы можете использовать метод get()

Если вам нужен кортеж или список или словарь или любая строка в качестве значения по умолчанию в качестве возвращаемого значения, используйте метод get()

Способы получения результатов:

  • if your_dict.has_key (key) Удалено в Python 3
  • если ключ в вашем_dict
  • try/except block
Читайте также:  Почему днем не работает цифровое телевидение

Что лучше зависит от 3 вещей:

  • Словарь "обычно имеет ключ" или "обычно не имеет ключа".
  • Вы собираетесь использовать такие условия, как if. else. elseif. else?
  • Насколько велик словарь?

Использование try/block вместо ‘in’ или ‘if’:

Просто добавление FYI к Крису. B (лучший ответ):

Работает также; причина в том, что вызов int() возвращает 0 , что является тем, что defaultdict делает за кулисами (при построении словаря), отсюда и название "Factory Function" в документации.

12 wan kenobi [2013-05-09 13:17:00]

Вы можете использовать метод has_key():

Или метод dict.get для установки значения по умолчанию, если не найден:

7 gounc86 [2015-07-15 21:55:00]

print dict.get(‘key1’, ‘blah’)

Не будет печатать boo для значений в dict, но выполнит цель, напечатав значение key1, чтобы подтвердить его существование.

Словарь Python имеет метод __contains__ . Этот метод вернет True, если словарь имеет ключ else, возвращает False.

Хорошо. Вам будет знакомо, что поиск существования элемента в списке или данных означает прохождение всего (по крайней мере, для неупорядоченного списка, например dict.keys). Так что вместо использования исключений и ошибок, которые возникают обычно, мы можем избежать этой сложности.

Самый простой — узнать, какой ключ (имя ключа) должен искать:

или вы также можете сделать это как:

Я использую попробовать/кроме; если выброшено исключение, то ключа нет в словаре. пример:

0 ARGeo [2019-01-12 18:03:00]

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

Первый подход (работает в Python 3):

Давай проверим это:

Результат первого Approach One :

Подход второй (работа в Python 3):

Давай проверим это тоже:

Результат Approach Two :

Подход третий (работа в Python 3):

Давай также проверим:

Результат Approach Three :

Надеюсь это поможет.

-5 wmorris [2018-07-09 21:36:00]

Почему бы просто не использовать метод has_key().

В Python есть много встроенных структур данных, используемых для хранения разных типов информации. Словарь ( dict ) — одна из таких структур, которая хранит данные в формате пар ключ-значение. Получить доступ к значениям словаря Python можно с помощью ключей. Этот материал посвящен подробному обсуждению словаря.

Создание словаря

Для создания словаря в Python необходимо передать последовательность элементов внутри фигурных скобок <> , разделив их запятыми ( , ). Каждый элемент имеет ключ и значение, выраженное парой «ключ: значение».

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

Следующие примеры показывают, как создавать словари Python:

Создание пустого словаря:

Cловарь, где ключи являются целыми числами:

Создание словаря с ключами разных типов:

Можно также создать словарь, явно вызвав метод dict() :

Словарь можно создать с помощью последовательности, как в примере внизу:

Словари могут быть вложенными. Это значит, что можно создавать словари внутри существующего словаря. Например:

Тест на знание python

Чтобы вывести содержимое словаря, можно использовать функцию print() и передать название словаря в качестве аргумента. Например:

Доступ к элементами

Чтобы получить доступ к элементам словаря, нужно передать ключ в квадратных скобках [] . Например:

Читайте также:  Lenovo ideapad y470 драйвера

Был создан словарь dict_sample . Затем была создана переменная x . Ее значение — это значение ключа ["model"] из словаря.

Вот другой пример:

Объект словаря также имеет функцию get() , которой можно пользоваться для доступа к элементам словаря. Ее нужно добавлять к словаря через точку и затем передавать название ключа как аргумент функции. Например:

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

Добавление элементов

Существует множество способов для добавления новых элементов в словарь. Можно использовать новый ключ и присвоить ему значение. Например:

У нового элемента ключ "Capacity" и значение — "180CC" . Он был добавлен в качестве первого элемента словаря.

Вот другой пример. Для начала нужно создать пустой словарь:

Словарь ничего не возвращает, потому что в нем ничего не хранится. Добавим в нему элементы, один за одним:

Для добавления элементов были отдельно указаны ключи и соответствующие значения. Например:

В этом примере 0 является ключом, а "Apples" — значение.

Можно даже добавить несколько значений для одного ключа. Например:

В этом примере название ключа — "Value" , а все что после знака = — его значения в формате множества ( Set ).

Помимо добавления новых элементов в словарь, их можно обновлять или изменять. Об этом в следующем разделе.

Обновление элементов

После добавления значения в словарь существующий элемент словаря можно изменить. Для изменения значения используется соответствующий ключ. Например:

В этом примере видно, что было обновлено значение ключа "year" с 2012 на 2014 .

Удаление элементов

Удалить элемент из словаря можно несколькими способами. В этом разделе они будут рассмотрены по одному:

Ключевое слово del можно использовать для удаления элемента с конкретным ключом. Например:

Вызывается ключевое слово del , а следом за ним — название словаря. В квадратных скобках следом за словарем идет ключ элемента, который требуется удалить. В этом примере это "year" . Запись "year" удаляется из словаря.

Другой способ удалить пару ключ-значение — функция pop() с ключом записи в виде аргумента. Например:

Функция pop() была вызвана добавлением ее к названию словаря. В этом случае будет удалена запись с ключом "year" .

Функция popitem() удаляет последний элемент в словаре. Для нее не нужно указывать конкретный ключ. Примеры:

Последней записью в словаре была "year" . Она пропала из словаря после вызова функции popitem() .

Что делать, если нужно удалить целый словарь? Это будет сложно и займет много времени, если пользоваться этими методами к каждому ключу. Вместо этого можно использовать ключевое слово del для целого словаря. Например:

Код вернет ошибку, потому что функция print() пытается получить доступ к словарю, который уже не существует.

В определенных случаях может потребоваться удалить все элементы словаря, оставив его пустым. Этого можно добиться, воспользовавшись функцией clear() :

Код вернет пустой словарь, поскольку все его элементы уже удалены.

Другие распространенные методы словарей

Метод len()

С помощью этого метода можно посчитать количество элементов в словаре. Например:

Читайте также:  Дмв антенна для цифрового телевидения своими руками

В этом словаре три записи, поэтому метод вернет 3.

Метод copy()

Этот метод возвращает копию существующего словаря. Например:

Была создана копия словаря dict_sample . Она присвоена переменной x . Если вывести x в консоль, то в ней будут те же элементы, что и в словаре dict_sample .

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

Метод items()

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

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

Объект, который возвращает items() , можно использовать, чтобы показать изменения в словаре. Вот как это работает.

Вывод демонстрирует, что когда вы меняете значение в словаре, объекты элементов также обновляются.

Метод fromkeys()

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

Значение требуемого параметра keys — итерируемые объекты. Оно отвечает за ключи нового словаря. Значение для параметра value указывать необязательно. Оно отвечает за значение по умолчанию для всех ключей. По умолчанию — None .

Предположим, что нужно создать словарь с тремя ключами и одинаковым значением. Это можно сделать следующим образом:

В коде вверху определены ключи и одно значение. Метод fromkeys() перебирает ключи и объединяет их со значением для создания заполненного словаря.

Значение для параметра keys является обязательным. В следующем примере показано, что происходит, если параметр values не определен:

Используется значение по умолчанию, None .

Метод setdefault()

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

У метода следующий синтаксис:

В этой функции параметр keyname является обязательным. Он обозначает название ключа, значение которого нужно вернуть. Параметр value необязательный. Если в словаре уже есть ключ, параметр не будет иметь никакого эффекта. Если ключ не существует, тогда значение функции станет значением ключа. Значение по умолчанию — None .

В словаре нет ключа color . Метод setdefault() вставляет этот ключ вместе со значением "Gray" .

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

Значение "Allion" не повлияло на словарь, потому что у ключа уже есть значение.

Метод keys()

Этот метод также возвращает итерируемый объект. Он является списком всех ключей в словаре. Как и метод items() , этот отображает изменения в самом словаре.

Для использования метода нужно всего лишь использовать его с именем словаря, как показано ниже:

Часто этот метод используется, чтобы перебрать все ключи в словаре:

Выводы

Это все, что нужно знать о словарях Python. Они хранят информацию в парах «ключ: значение». «Ключ» выступает идентификатором объекта, а «значение» — это определенные данные. В Python много функций, которые могут быть использовать для извлечения и обработки данных. В этой статье были рассмотрены способы создания, изменения и удаления словаря, а также самые распространенные методы для работы с этим типом данных.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.