Как проверить наличие ключа в словаре python
Перейти к содержимому

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

  • автор:

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

Python Check if Key Exists in a Dictionary Cover Image

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.

How to Check If Key Exists in Dictionary in Python? – Definitive Guide

Python Dictionaries are used to store data in a key-value pair. Dictionaries are changeable and it doesn’t allow duplicate keys.

You can check if a key exists in a dictionary using dict.keys() method in Python.

In this tutorial, you’ll learn the different methods available to check if keys exist in a dictionary, and also you’ll learn how to check the keys in different use cases.

Table of Contents

Sample Dictionary

This is the sample dictionary you’ll use in this tutorial. It contains the keys one, two, three, four.

All the keys are in lower case. This is useful for learning how to check if a key exists in the dictionary in a case-sensitive way.

There are three methods available in python to check if a key exists in the dictionary.

  • Using dictionary.keys()
  • Using If And IN
  • Using has_keys() (deprecated in Python 3)

Using Keys()

You can check if a key exists in a dictionary using the keys() method and IN operator.

The keys() method will return a list of keys available in the dictionary and IF , IN statement will check if the passed key is available in the list.

If the key exists, it returns True else, it returns False .

Code

Output

This is how you can check if a key exists using the dictionary.keys() method.

Using If and In

You can check if the key exists in the dictionary using IF and IN. When using the dictionary directly with IF and IN, it’ll check if the key exists in the dictionary.

If a key exists, It returns True else it returns False .

Code

Output

This is how you can check if a key is available in the dictionary using the IF and IN .

Using has_key()

You can use the has_key() method to check if a key is available in a dictionary.

This is deprecated in python 3. If you are using an older version of python than python 3, then you can use this method.

You can check the python version in cmd using the below command.

Output

Code

This tutorial uses the version Python 3. Hence, the below error is thrown as output.

Output

These are the different methods available in python to check if keys are available in the dictionary.

Now, you’ll learn about the different ways to use this.

Check If Multiple Keys Exists in Dictionary

You can check if multiple keys exist in the dictionary in one statement. You can use the all() along with the list comprehension to check if multiple or all keys exists in the dictionary.

Code

  • for key in («one»,»two») – Keys to check in the dictionary will be iterated
  • key in mydict – During the each iteration of the for loop, each key will be checked if it exists in the mydict
  • Then, it’ll return a list which contains True or False based on the IN check.
  • At-last, the all() method checks the list. If it contains only True , then it means all the passed keys are available in the dictionary. If it contains at-least one False , then it returns false.

Output

Example 2

To check the negative scenario where all the passed keys are not available in the dictionary.

Output

This is how you can check if multiple keys exist in a dictionary in one statement.

Check If Key Exists in Dictionary Case Insensitive

By default, the IF , IN method is case-sensitive. When you check if a key exists in the dictionary using the IF , IN method, you should pass the proper case.

  • To check if a key exists in a dictionary in a case-insensitive way, you need to create a set by converting all the keys to either lowercase or uppercase.

Code

In the example, you’ll

  • convert all the keys to lowercase using the lower() method.
  • convert the key to be checked to lower case.
  • Pass the key to be checked and the set with lower case keys to IF , IN statement to check if a key exists in a case-insensitive way.

Output

This is how you can check if a key exists in a dictionary in a case-insensitive way.

Check If Key Exists and Has Value

You can check if a key exists and has a specific value in the dictionary by using the dictionary.items() method.

The items() method will return a list of tuples with the available key pairs in the dictionary.

Use IF and IN with a tuple to check if it exists in the dictionary, as shown below.

Code

Output

This is how you can check if a key exists and has a value in the dictionary.

Check if Key Exists in Dictionary Time complexity

This section explains the time complexity of the different methods that checks if a key exists in a dictionary.

Time Complexity Table

Operation Average Case Amortized Worst Case
k in d O(1) O(n)
Get Item O(1) O(n)
Iteration[3] O(n) O(n)

Based on the above table, using the IF and IN statements are the best and fastest way to check if a key exists in the dictionary.

Словарь

Словари, наряду со списками, кортежами и множествами, также входят в состав коллекций (collections), т.е. структур данных, содержащих несколько элементов. Мы уже начали изучать словари на пятом занятии вводного курса. Продолжим этот путь.

Понятие словаря в Питоне

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

словарь в Питоне

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

Пустой словарь можно инициализировать через фигурные скобки < >или функцию dict().

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

Словарь можно также создать из вложенных списков.

Иногда бывает полезно создать словарь с заранее известными ключами и заданным значением. В этом нам поможет метод .fromkeys().

Ключи и значения словаря

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

Значения словаря, наоборот, могут состоять из чисел, строк, пропущенных (NaN) и логических значений, значения типа None, списков, массивов Numpy и вложенных словарей.

Методы .keys(), .values() и .items()

Создадим словарь с данными сотрудника.

Как мы уже знаем, доступ к ключам и значениям можно получить через методы .keys() и .values() соответственно.

Метод .items() возвращает и то, и другое в формате списка из кортежей.

Использование цикла for

Ключи и значения словаря удобно просматривать с помощью цикла for и метода .items().

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

Использование в цикле for методов .keys() и .values() выводит только ключи или только значения соответственно.

Доступ по ключу и метод .get()

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

Если такого ключа нет, Питон выдаст ошибку.

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

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

Если ключа в словаре нет, метод .get() возвращает значение None.

Проверка наличия ключа и значения в словаре

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

Важно сказать, что оператор in работает быстрее метода .get().

Метод .values() поможет проверить наличие определенного значения.

Метод .items() поможет проверить наличие пары ключ : значение. Обратите внимание, эту пару мы записываем в форме кортежа.

Операции со словарями

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

Добавить элемент можно, передав новому ключу новое значение.

Изменить элемент можно передав существующему ключу новое значение.

Метод .update() позволяет соединить два словаря.

Метод .setdefault() не изменяет значение, если указанный ключ уже содержится в словаре.

Если такого ключа нет, ключ и соответствующее значение будут добавлены в словарь.

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

Метод .pop() удаляет элемент по ключу и выводит удаляемое значение.

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

Ключевое слово del также удаляет элемент по ключу.

Метод .popitem() удаляет и выводит последний добавленный в словарь элемент.

Метод .clear() удаляет все ключи и значения и возвращает пустой словарь.

Ключевое слово del также позволяет удалить словарь целиком.

ошибка при попытке вывести удаленный словарь

Сортировка словарей

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

Отсортируем ключи этого словаря.

Теперь отсортируем значения с помощью метода .values().

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

Затем мы укажем эти кортежи в качестве первого аргумента функции sorted(). Параметру key этой же функции мы передадим lambda-функцию, которая вернет либо ключ lambda x : x [ 0 ] каждого кортежа, либо его значение lambda x : x [ 1 ] . Именно по ним и будет произведена сортировка.

Копирование словарей

Копирование объектов в Питоне (не только словарей) осуществляется с помощью метода .copy().

Как мы видим, исходный словарь не изменился. Так и должно быть.

Теперь давайте попробуем скопировать словарь с помощью оператора присваивания = .

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

Функция dir()

На сегодняшнем занятии мне также хотелось бы показать вам функцию dir(), благодаря которой можно увидеть методы того или иного объекта. Давайте посмотрим на методы словаря.

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

Например, когда мы вызываем функцию print() и передаем ей словарь.

На самом деле мы применяем к словарю метод __str__ ( ) .

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

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

Dict comprehension

Dictionary comprehension, как и в случае со списками, позволяет превратить один словарь в другой. В процессе этого превращения, элементы исходного словаря могут быть изменены или отобраны на основе какого-либо условия.

Основной целью использования как list, так и dict comprehension является упрощение и повышение читаемости кода.

Приведем базовую схему dict comprehension.

схема dict comprehension в Питоне

Посмотрим на два несложных примера.

В первом примере умножим каждое значение на два.

Во втором примере сделаем символы всех ключей заглавными с помощью метода .upper().

Теперь предположим, мы хотим отсортировать те пары, в которых значение больше двух, но меньше шести.

Если бы мы выполняли эту задачу с помощью цикла for, то использовали бы оператор И.

Как и в случае list comprehension, применение условия if-else несколько меняет изначальную схему. Предположим, мы хотим определить, какие из значений четные, а какие нечетные.

Dict comprehension можно использовать вместо метода .fromkeys().

Дополнительные примеры

lambda-функция, функции map() и zip()

Пример со списком

Возьмем список фруктов.

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

словарь, в котором ключи - это слова, а значения - их длина

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

функция map() в Питоне

В нашем случае первым аргументом будет lambda-функция lambda word : len ( word ) , которая просто посчитает длину передаваемого ей слова, а вторым аргументом будет наш список фруктов.

Как вы видите, мы использовали функцию list() для преобразования результата в список.

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

Интересно, что эту же задачу можно решить с помощью list comprehension.

В данном случае функции zip() мы передаем список фруктов и очень простую list comprehension, которая рассчитывает длину слов.

Пример со словарем

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

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

Здесь мы снова воспользовались lambda-функцией, которую в качестве аргумента передали в функцию map(). Обратите внимание, вторым аргументом стали значения словаря, полученные через метод .values().

После этого мы можем снова воспользоваться функцией zip(), которой передадим ключи исходного словаря и список данных о росте с округлением до двух знаков после запятой.

Как и в предыдущем примере, эту задачу можно решить с помощью dict comprehension.

Код соответствует основной схеме, приведенной выше, и в целом читается проще, чем конструкция с lambda-функцией и функцией map().

Вложенные словари

Рассмотрим более сложный словарь с информацией о нескольких сотрудниках.

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

Базовые операции

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

Небольшое отступление от темы. Сложные структуры данных бывает удобно вывести с помощью функции pprint() одноименного модуля.

Функция pprint() расшифровывается как pretty print («красивая печать») и в некоторых случаях справляется со своей задачей лучше обычной функции print().

Посмотрим как можно добавить вложенный словарь.

Изменить значение вложенного словаря можно также с помощью двойного ключа.

Циклы for

Посмотрим, как можно использовать цикл for со вложенными словарями. Давайте заменим тип данных с информацией о возрасте сотрудника с int на float.

Вложенные словари и dict comprehension

Вложенные словари также допускают использование dict comprehension. Предположим, что мы хотим вернуть данные о возрасте из типа float обратно в тип int. Разобьем эту задачу на несколько этапов.

Шаг 1. Просто выведем словарь employees без изменений, используя dict comprehension.

Шаг 2. Создадим еще один dict comprehension, с помощью которого внутри каждого вложенного словаря мы заменим тип данных значения с float на int, если ключ совпадает с age, если не сопадает — оставим значение без изменений (по сути, условие с if-else).

Шаг 3. Вставим второй dict comprehension в первый вместо переменной info. Напомнью, info — это значения внешнего словаря, которые сами по себе являются словарями. Именно к ним мы и применим второй dict comprehension.

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

Частота слов в тексте

Напоследок разберем очень несложный пример подсчета частоты слов в тексте. Это уже знакомый нам мешок слов (Bag of Words, BoW). В качестве примера возьмем уже известный нам текст про Париж, музеи и искусство.

Предварительная обработка текста

Превратим строку в список слов.

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

Мы готовы создавать мешки слов разными способами.

Способ 1. Условие if-else

Начнем с простых условий if-else.

Способ 2. Метод .get()

Помимо этого мы можем использовать метод .get().

Поясню приведенный код. Метод .get() проверит наличие ключа (слова) в словаре и, если его нет, выведет 0.

Далее мы прибавим к нулю единицу (потому что слово встретилось первый раз) и запишем это слово в наш словарь.

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

Способ 3. Класс Counter модуля collections

Напомню, что этот же функционал реализован в классе Counter модуля collections.

Результат. Обратите внимание, в отличие от мешка слов, который мы создавали на занятии по обработке естественного языка, в число наиболее популярных слов вошли артикли, предлоги и союзы. Они не несут полезной информации о содержании текста. Это так называемые стоп-слова. Кроме того, мы не провели лемматизацию, и поэтому museum и museums считаются разными словами.

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

Подведем итог

Сегодня мы подробно рассмотрели, что собой представляет словарь в Питоне.

Мы изучили структуры словаря, основные операции со словарями, использование dict comprehension, а также рассмотрели ряд дополнительных примеров. В частности, мы узнали про возможность создания словаря с помощью lambda-функции, а также функции map() и zip(), вложенные словари и несколько способов подсчета частоты слов в заданном тексте.

Вопросы для закрепления

Вопрос. Есть ли индекс у элементов словаря в Питоне?

Посмотреть правильный ответ

Ответ: нет, элементы словаря в Питоне не упорядочены, и у них отсутствует индекс. Доступ к элементам словаря осуществляется по ключу.

Вопрос. С помощью какого метода можно соединить два словаря в один?

Посмотреть правильный ответ

Ответ: для этого подойдет метод .update().

Вопрос. Почему при копировании объекта в Питоне лучше использовать метод .copy()?

Посмотреть правильный ответ

Ответ: если для копирования использовать оператор присваивания = , то при изменении нового объекта изменится и исходный. Это происходит потому, что новая переменная лишь ссылается на объект, содержащийся в исходной переменной.

В ноутбуке к лекции приведены дополнительные упражнения⧉.

В следующий раз мы поговорим про массив Numpy.

Ответы на вопросы

Вопрос. А что будет, если в словаре есть одинаковые ключи?

Ответ. Давайте посмотрим на примере. При создании словаря с одинаковыми ключами:

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Python: проверьте, существует ли ключ в словаре

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

Время чтения: 4 мин.

Вступление

Словарь (также известный как «карта», «хэш» или «ассоциативный массив»)

  • это встроенный контейнер Python, в котором элементы хранятся в виде пары ключ-значение.

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

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

В примерах мы будем использовать этот словарь fruits_dict

Проверьте, существует ли ключ, используя в Operator

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

Здесь будет либо True если ключ существует, либо False если нет:

Теперь, когда orange , вот результат:

Это предполагаемый и предпочтительный подход большинства разработчиков. Под капотом он использует __contains__() чтобы проверить, находится ли данный ключ in словаре или нет.

Проверьте, существует ли ключ, используя get ()

Функция get() принимает key и необязательное значение, которое должно быть возвращено, если key не найден. По умолчанию это необязательное значение — None . Мы можем попробовать получить ключ, и если возвращенное значение None , это означает, что его нет в словаре:

Проверьте, существует ли ключ, используя keys ()

Функция keys() возвращает ключи из нашего словаря в виде последовательности:

Эта последовательность содержит:

Используя эту последовательность, мы можем проверить, присутствует ли ключ. Вы можете сделать это с помощью цикла или, что еще лучше, использовать оператор in

Это также приводит к:

Проверьте, существует ли ключ, используя has_key ()

Вместо того, чтобы вручную получать ключи и проверять, присутствует ли has_key() :

Он возвращает True или False зависимости от наличия ключа. Этот код выводит:

Обработка исключения KeyError

Интересный способ избежать проблем с несуществующим ключом или, другими словами, проверить, существует ли ключ в нашем словаре или нет, — это использовать предложение try и except для обработки исключения KeyError

Следующее исключение возникает всякий раз, когда нашей программе не удается найти соответствующий ключ в словаре.

Это простой, элегантный и быстрый способ поиска ключей:

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

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

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

Сравнение производительности

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

Заключение

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *