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

В 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

2 комментария к “Как получить ключ по значению в словаре в Python”

  1. Пингбэк: Что такое изменяемые типы данных в Python - pythonturbo

Оставьте комментарий

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