В Python мы можем получить значения, присутствующие в словаре, по их ключам. Для этого используется синтаксис dict_name[key_name]
. Но мы не можем таким же образом получить ключ по значению.
В этой статье мы рассмотрим способы, с помощью которых мы можем получить ключ заданного значения в словаре.
БЕСПЛАТНО СКАЧАТЬ КНИГИ по Python на русском языке можно у нас в телеграм канале "Python книги на русском"
Как получить ключ из пары ключ-значение путем перебора элементов словаря
Это самый простой способ извлечь ключ по значению. Мы проверяем каждую пару ключ-значение, чтобы найти ключ, связанный с текущим значением.
Для этой задачи мы будем использовать метод items()
. Этот словарный метод возвращает список кортежей, содержащих пары ключ-значение. В полученном списке мы проверим каждый кортеж, чтобы найти ключ, связанный с нашим значением.
myDict = {"name": "PythonTurbo", "acronym": "PT"} print("Dictionary is:") print(myDict) dict_items = myDict.items() print("Given value is:") myValue = "PT" print(myValue) print("Associated Key is:") for key, value in dict_items: if value == myValue: print(key)
Результат:
Dictionary is: {'name': 'PythonTurbo', 'acronym': 'PT'} Given value is: PT Associated Key is: acronym
Мы создали список элементов в myDict
с помощью myDict.items()
, а затем проверили каждый элемент в списке, чтобы найти ключ для нашего значения.
Как получить ключ по значению с помощью списков
Мы можем создать отдельные списки из ключей и значений, а затем найти ключ нужного значения с помощью метода index()
.
Для этой задачи мы сначала создадим список ключей, имеющихся в словаре, используя метод keys()
. Затем создадим список значений, используя метод values()
. После этого мы получим индекс нужного значения из списка значений с помощью метода index()
.
Мы знаем, что список ключей имеет тот же порядок ключей, что и значения в списке значений. Поэтому индекс значения в списке значений будет таким же, как и индекс связанного с ним ключа в списке ключей. Таким образом, найдя индекс значения в списке значений, мы можем найти ключ в списке ключей по тому же индексу.
Это можно сделать следующим образом:
myDict = {"name": "PythonTurbo", "acronym": "PT"} print("Dictionary is:") print(myDict) dict_keys = list(myDict.keys()) dict_values = list(myDict.values()) print("Given value is:") myValue = "PT" print(myValue) val_index = dict_values.index(myValue) print("Associated key is:") myKey = dict_keys[val_index] print(myKey)
Выходные данные:
Dictionary is: {'name': 'PythonTurbo', 'acronym': 'PT'} Given value is: PT Associated key is: acronym
Как получить ключ по значению с помощью list comprehension
Для получения ключа, связанного с заданным значением, вместо метода index()
можно использовать представление списка. О представлениях списков вы можете почитать в статье “List comprehensions и другие comprehensions в Python”.
Чтобы найти ключ, мы создадим список ключей, значения которых равны заданному значению:
myDict = {"name": "PythonTurbo", "acronym": "PT"} print("Dictionary is:") print(myDict) dict_items = myDict.items() print("Given value is:") myValue = "PT" print(myValue) print("Associated key is:") myKey = [key for key, value in dict_items if value == myValue] print(myKey)
Результат:
Dictionary is: {'name': 'PythonTurbo', 'acronym': 'PT'} Given value is: PT Associated key is: ['acronym']
Заключение
В этой статье мы рассмотрели три способа получить из словаря Python ключ по значению: с помощью list comprehension
, метода items()
и метода index()
.
Перевод статьи Aditya Raj “Get key from value in dictionary“
тест
Пингбэк: Что такое изменяемые типы данных в Python - pythonturbo