Как проверить есть ли ключ в словаре

от admin

Проверить, существует ли данный ключ в словаре Python

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

1. Использование в операторе

Предпочтительный и самый быстрый способ проверить наличие ключа в словаре — использовать in оператор. Он возвращается True если ключ есть в словаре, False в противном случае.

The in оператор реализует встроенную функцию __contains__ . Однако вызывать __contains__ напрямую. in оператор — это Pythonic способ вызвать __contains__ функция.

2. Использование dict.get() функция

Другим распространенным подходом к поиску ключа в словаре является использование get() функция. Это возвращает значение ключа, если оно найдено; в противном случае указанное значение или значение по умолчанию None возвращается.

3. Использование блока try/except

Вы также можете использовать d[key] синтаксис для проверки ключа в словаре. Это вызывает KeyError когда указанный ключ не существует в словаре. Чтобы справиться с этим, используйте блок try/except, как показано ниже:

4. Использование setdefault() функция

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

Это все, что касается определения того, существует ли данный ключ в словаре Python.

Оценить этот пост

Средний рейтинг 5 /5. Подсчет голосов: 20

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования ��

Словари¶

dict (от английского «dictionary», словарь) – еще один тип данных в Python. Словари хранят пары ключ : значение . То есть в списках можно достать элемент, если указать его позицию в виде целого числа, а в словарях – тот самый ключ . dict – тип данных, поэтому достать элемент по номеру не получится, но отображение содержимого будет элементов. ключей должна поддерживаться, чтобы всегда можно было быстро найти одно единственно верное значение .

В некоторых языках программирования можно встретить ассоциативные массивы – полную аналогию dict . Также вспомним базы данных, широко использующиеся во всём мире для хранения информации: в таблице можно установить первичный ключ, который уникально идентифицирует запись, как и ключ соответствует значению в словаре. Самый простой пример ключа — порядковый номер объекта!

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

Использовать словарь стоит, когда нужно сохранять объекты с какими-то ключами и обращаться к объектам по известным ключам. Один из способов определения словаря: указание пар ключ : значение через^запятую внутри фигурных скобок <> . Напоминает set , правда? <> позволяет создать пустой словарь, но не пустое множество.

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

В примере dates имеет две пары значений. В первой паре строка «Кунг Фьюри» является ключом, а «1968-09-09» – его значением.

Получение значения по ключу¶

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

Если указать неверный ключ в [] , Python будет ругаться: выбросит ошибку KeyError и перестанет выполнять код. Чуть ниже посмотрим, как можно избежать таких ситуаций.

Изменение и добавление значений¶

Синтаксис изменения значения по ключу и добавления нового ключа со значением одинаковый: в [] нужно указать ключ, поставить = и указать значение, которое теперь будет соответствовать ключу.

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

Основные методы словаря¶

Проверка вхождения и get() ¶

Помните, ранее говорили, что обращение к несуществующему ключу приводит к ошибке? Пришло время посмотреть пару способов борьбы!

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

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

Теперь о методе get() : при помощи его тоже можно получать значения из словаря по ключу. KeyError никогда не появится: если ключа нет, по умолчанию возвращается None :

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

Что такое «длина словаря»?¶

Функция len() для словаря будет возвращать количество пар ключ : значение (их столько же, сколько ключей), которое в нём содержится:

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

Есть несколько способов очистки в словаре: можно убирать по ключу, а можно сразу удалить все!

при помощи инструкции del (от английского «delete») можно удалить пару ключ : значение (удаление ключа эквивалентно удалению пары ключ : значение , так как теряем возможность найти то самое значение ), в общем виде:

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

pop() — метод, который достает значение, хранящееся по переданному ключу, и сразу удаляет ключ из словаря:

Для метода pop() есть возможность указать значение, которое будет возвращено при обращении к несуществующему ключу. Почти как get() , но всё-таки, без указания этого значения, pop() выбрасывает KeyError .

popitem() имеет схожее название, но не путайте с предыдущим методом: этот на вход не принимает ключ , а возвращает пару ключ : значение , которая была добавлена последней (такое поведение гарантируется с Python ).

clear() позволяет удалить сразу все ключи словаря, то есть полностью его очистить:

Обратите внимание на то, как работают методы pop() , popitem() и clear() : как только вызываются, словарь меняет свой состав (изменения происходят in place, то изменить по месту без копирования).

Обновление и добавление ключей¶

Лицезрели, что значения в словарь можно добавлять или менять, обращаясь по ключу. Python предоставляет возможность не писать кучу присваиваний, а использовать лаконичный метод update() , который на вход может принимать либо другой словарь, либо пары ключ : значение в какой-то последовательности (например, кортежи по два значения в списке: первое – ключ, второе – значение)

А что, если в update() передать пары, ключ которых уже был в словаре? Значения по дублирующимся ключам будут на новые:

Доступ к ключам и значениям¶

В Python можно без проблем извлекать отдельно по ключам или значениям, а также итерироваться по элементам словарей в цикле for . Осталось разобраться, как это работает.

Ключи¶

По умолчанию, в конструкциях вида

переменные цикла (тут – key ) будут принимать значения из множества словаря. Аналогично можно использовать метод keys() (позволяет достать все ключи), который явно говорит, что цикл идет по ключам, например:

Значения¶

При помощи метода values() можно получить все значения, хранящиеся по всем ключам словаря:

Напрямую по значению получить ключ нельзя.

Всё и сразу¶

Существует метод items() , который достает пары ключ : значение в виде последовательности кортежей. Его же часто удобно использовать в циклах, дабы не тащить длинную запись в виде названия словаря и квадратных скобок с ключом при обращении к значению:

Сортировка¶

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

Когда в функции передаётся просто название переменной со словарем, работа идет только над множеством ключей.

Можно ли отсортировать словарь по значениям?

Да, можно попробовать самостоятельно разобраться с аргументами функции sorted() .

Что можно хранить¶

Теперь добавим немного технических подробностей: возможно, уже заметили самостоятельно, что dict может принимать в качестве ключа не всякое значение. На самом деле только объекты (можно вызвать функцию hash() и получить значение) могут быть ключами словаря, на значения это ограничение не распространяется. В dict и set значение хеша от объекта используется для поиска внутри структуры.

Ключом словаря нельзя сделать объект типа, например, list , set или сам dict , так как значение их хеша может измениться со временем. Неизменяемый кортеж может быть ключом только если не содержит внутри изменяемые объекты.

Изменяемость и неизменяемость¶

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

В Python всё есть объект. Когда пользователь присваивает значение переменной, она начинает ассоциироваться с ячейкой памяти, где лежит это значение. Переменная знает адрес, откуда можно получить значение. id() и hex() показывают адрес в памяти компьютера. id() — адрес в десятичном виде, а hex() поможет перевести в шестнадцатеричный.

Словари в Python

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

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

Как создать словарь

Чтобы создать словарь в Python, необходимо прописать элементы внутри фигурных скобок <> и разделить их запятыми.

В элементе содержится ключ и соответствующее значение, они записываются так: (ключ: значение) .

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

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

Как получить элементы из словаря

В отличие от других типов данных, где для доступа к элементам используется индексация, в словаре используются ключи. Они используются внутри квадратных скобок или в качестве аргумента метода get() .

При использовании квадратных скобок и отсутствии элемента в словаре вызывается ошибка KeyError. При использовании метода get() и отсутствии элемента возвращается None .

Вывод:

Как изменить или добавить элементы в словаре

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

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

Читать:
Как скачать визуал студио 2019

Вывод:

Как удалить элементы из словаря

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

Удалить произвольную пару (ключ, значение) можно с помощью метода popitem() . Очистить весь словарь за один раз можно с помощью метода clear() .

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

Вывод:

Методы словарей

В таблице ниже указаны доступные методы словарей. Некоторые из них мы уже использовали в примерах выше.

Метод

Что делает

Удаляет все элементы из словаря

Возвращает неглубокую копию словаря

Возвращает словарь с ключами из seq и значениями, равными v (по умолчанию None )

Возвращает значение ключа key . Если key не существует, возвращает d (по умолчанию None )

Возвращает новый объект элементов словаря в формате (ключ, значение)

Возвращает новый объект с ключами словаря

Удаляет элемент с ключом key и возвращает его значение или d , если key не найден. Если d не было обозначено и key не найден, вызывает ошибку KeyError.

Удаляет и возвращает произвольную пару (ключ, значение) . Вызывае ошибку KeyError, если словарь пустой.

Если ключ key есть в словаре, возвращает соответствующее ему значение. Если нет, добавляет в словарь элемент с ключом key и значением d и возвращает d (по умолчанию None )

Обновляет словарь имеющимися парами ключ/значение из other , перезаписывая существующие ключи

Возвращает новый объект со значениями словаря

Вывод:

Представление словарей

Представление словарей — элегантный и лаконичный способ создать новый словарь из итерируемого объекта.

Представление словарей состоит из выражения ключ: значение , за которым следует for , и всё это — внутри фигурных скобок <> .

Создадим словарь с парами чисел и их квадратов в качестве элементов:

Вывод:

То же самое можно сделать иначе, но так будет длинее:

Вывод:

В представлении словарей выражений for и if опционально может быть больше.

Необязательное выражение if поможет отфильтровать элементы для создания нового словаря.

Давайте создадим словарь только с квадратами только нечетных чисел:

Вывод:

Другие операции со словарями

Проверка на вхождение в словарь

Проверить, есть ли ключ в словаре, можно с помощью ключевого слова in . Отметим, что проверку на вхождение можно провести только над ключами, не над значениями

Вывод:

Итерирование по словарю

Мы можем пройтись по всем ключам словаря, используя цикл for .

Вывод:

Встроенные функции для словарей

Встроенные функции all() , any() , len() , cmp() , sorted() и т. д. часто используются со словарями для разных задач.

Функция

Описание

Возвращает True , если все ключи словаря = True (или если словарь пуст)

Возвращает True , если хотя бы один ключ словаря = True . Если словарь пуст, возвращает False .

Python: Check if a Key (or Value) Exists in a Dictionary (5 Easy Ways)

In this tutorial, you’ll learn how to use Python to check if a key exists in a dictionary. You’ll also learn how to check if a value exists in a dictionary. You’ll learn how to do this using the in operator, the .get() method, the has_key() function, and the .keys() and .values() methods.

Knowing how to work with Python dictionaries is an important skill. This can be especially helpful when working with web APIs that return JSON data.

While we can easily index a dictionary, if a key doesn’t exist, a KeyError will be thrown. This will cause some significant problems in your program, unless these errors are handled.

A much more safe alternative to using dictionary indexing, is to first check if a given key exists in a dictionary. Let’s get started learning!

The Quick Answer: Use in to see if a key exists

Quick Answer - Python Check if Key Exists in a Dictionary

Table of Contents

What is a Python Dictionary?

Dictionaries in Python are one of the main, built-in data structures. They consist of key:value pairs that make finding an items value easy, if you know their corresponding key. One of the unique attributes of a dictionary is that keys must be unique, but that values can be duplicated.

Let’s take a look at how dictionaries look in Python. They’re created using <> curly brackets and the key:value pairs are separated by commas.

Let’s create a dictionary called ages , which, well, contains the ages of different people:

One way that you’re often taught to access a dictionary value is to use indexing via the [] square bracket accessing. In the next section, you’ll see how dictionary indexing works and why it’s not always the best option. Following that, you’ll learn different methods of ensuring that a key exists.

The Problem with Indexing a Python Dictionary

Indexing a dictionary is an easy way of getting a dictionary key’s value – if the given key exists in the dictionary. Let’s take a look at how dictionary indexing works. We’ll use dictionary indexing to get the value for the key Nik from our dictionary ages :

We can see here that this worked beautifully. That being said, let’s see if we try to get the value for the key Jill , which doesn’t exist in the dictionary:

We can see here, that if we try to access a dictionary’s value for a key that doesn’t exist, that a KeyError is thrown. This has some huge implications for your code. Unless the error is explicitly handled, the program will fail. One way to avoid a KeyError is to ensure that a key actually exists in a Python dictionary.

That’s exactly what you’ll learn in the next few sections. Let’s get started!

Use Python to Check if a Key Exists: Python keys Method

Python dictionary come with a built-in method that allows us to generate a list-like object that contains all the keys in a dictionary. Conveniently, this is named the .keys() method.

Printing out dict.keys() looks like this:

We can see how that looks like a little bit like a list. We can now check if a key exists in that list-like object!

Let’s see how we can use the .keys() method to see if a key exists in a dictionary. Let’s use this method to see if a key exists:

We can see here that we check whether or not a provided key, some_key , exists in the keys of our dictionary. In this case, the key didn’t exist and the program printed out Key doesn’t exist .

In the next section, you’ll learn how to simplify this even further!

Use Python to Check if a Key Exists: Python in Operator

The method above works well, but we can simplify checking if a given key exists in a Python dictionary even further. We can actually omit the .keys() method entirely, and using the in operator will scan all keys in a dictionary.

Let’s see how this works in practise:

We can see here that our method actually looks very similar to the above, but we’ve been able to strip out the .keys() method entirely! This actually helps the code read a bit more plain-language.

in the next section, you’ll learn how to actually retrieve a key’s value, even if a key doesn’t exist!

Use the .get Method to Check if a Key Exists in a Python Dictionary

Working with dictionaries in Python generally involves getting a key’s value – not just checking if it exists. You learned earlier that simply indexing the dictionary will throw a KeyError if a key doesn’t exist. How can we do this safely, without breaking out program?

The answer to this, is to use the Python .get() method. The .get() method will simply return None if a key doesn’t exist. Let’s try this out:

We can see here that when the .get() method is applied to return a key that exists, that key’s value is correctly returned. When a key doesn’t exist, the program continues to run, but it returns None .

What is particularly helpful about the Python .get() method, is that it allows us to return a value, even if a key doesn’t exist.

Say we wanted our program to notify us that a key didn’t exist. We could ask the .get() method to return “Key doesn’t exist!”.

Let’s see how we can do this:

The .get() method is a great and safe way to see if a key exists in a Python dictionary. Now, let’s learn to see whether or not a given value exists in a Python dictionary.

Check if a Value Exists in a Python Dictionary Using .values()

Similar to the Python dictionary .keys() method, dictionaries have a corresponding .values() method, which returns a list-like object for all the values in a dictionary.

Let’s see how we can access all of a dictionary’s values:

We can use this to see whether or not a value exists. Say we wanted to know if the age 27 existed in our dictionary, we could write the following:

Now, what if we wanted to return the key or keys for a given value. We can safely do this using a list comprehension, which will have three permutations:

  1. Be an empty list, if the value doesn’t exist,
  2. Have one item, if the value exists once
  3. Have more than one item, if the value exists more than once

Let’s use a slightly modified dictionary to see this in action:

We’ve created a list comprehension that adds each key, if the value of that key is equal to 43.

What are Python List Comprehensions? To learn more about list comprehensions, check out my comprehensive tutorial here and my in-depth video below!

Conclusion

In this post, you learned how to check if a key exists in a Python dictionary. You learned how to do this with the .keys() method, the in operator, and the .get() method. You also learned how to see if a given value exists in a Python dictionary and how to get that values’ key(s).

To learn more about dictionaries in Python, check out the official documentation here.

Похожие статьи