Давайте подивимося, як отримати ключ за значенням у словнику Python.
Приклад: однорядковий код
Python3
# creating a new dictionary> my_dict>=>{>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # one-liner> print>(>'One line Code Key value: '>,>list>(my_dict.keys())> >[>list>(my_dict.values()).index(>100>)])> |
>
>
Вихід:
Java>
Видобути ключ зі словника Python за допомогою значення
Спосіб 1. Отримайте ключ за значенням за допомогою розуміння списку
Розуміння списку складається з дужок, що містять вираз, який виконується для кожного елемента разом із циклом for для повторення кожного елемента в списку Python для отримання ключа зі значення в Словник .
Python3
байтів до рядка python
dic>=>{>'geeks'>:>'A'>,>'for'>:>'B'>,>'geeks'>:>'C'>}> value>=> {i>for> i>in> dic>if> dic[i]>=>=>'B'>}> print>(>'key by value:'>,value)> |
>
>
Вихід:
key by value: {'for'}> Часова складність: O(N)
Допоміжний простір: О(1)
Спосіб 2: Отримати ключ за значенням за допомогою list.index()
The метод index(). повертає індекс відповідного значення в списку. Тут використовується підхід, щоб знайти два окремих списки ключів і значень. Потім візьміть ключ за допомогою положення значення у val_list. Оскільки ключ у будь-якій позиції N у key_list матиме відповідне значення в позиції N у val_list.
Python3
# creating a new dictionary> my_dict>=>{>'java'>:>100>,>'python'>:>112>,>'c'>:>11>}> # list out keys and values separately> key_list>=> list>(my_dict.keys())> val_list>=> list>(my_dict.values())> # print key with val 100> position>=> val_list.index(>100>)> print>(key_list[position])> |
>
>
Вихід:
java>
Часова складність: О(1)
Допоміжні приміщення: О(1)
Спосіб 3: Отримати ключ за значенням за допомогою dict.item()
Ми також можемо отримати ключ зі значення, зіставивши всі значення за допомогою dict.item(), а потім надрукувавши відповідний ключ для заданого значення.
Python3
# function to return key for any value> def> get_key(val):> > >for> key, value>in> my_dict.items():> >if> val>=>=> value:> >return> key> >return> 'key doesn't exist'> # Driver Code> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> print>(get_key(>100>))> print>(get_key(>11>))> |
>
>Вихід
Java C>
Часова складність: O(n), де n – кількість пар ключ-значення в словнику.
Допоміжні приміщення: O(1), оскільки простір, який використовується функцією, не залежить від розміру вхідного словника.
Спосіб 4: Використання лямбда-вираз і filter()
Ось приклад використання функції filter() для отримання ключа, що відповідає значенню в словнику:
Python3
my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # Get the key corresponding to value 100> key>=> list>(>filter>(>lambda> x: my_dict[x]>=>=> 100>, my_dict))[>0>]> print>(key)> #This code is contributed by Edula Vinay Kumar Reddy> |
>
>Вихід
Java>
У цьому прикладі функція filter() використовується для створення списку ключів із my_dict, де значення дорівнює 100. Отриманий список потім індексується в позиції 0, щоб отримати перший елемент, який є ключем, що відповідає значенню 100.
Часова складність: O(n) , оскільки функція filter() має виконати ітерацію по всьому словнику, щоб створити список ключів.
Допоміжний простір - O(n) , оскільки список ключів, створений filter(), має розмір, що дорівнює кількості елементів у словнику.
МЕТОД 5: Використання методу елементів
Цей код знаходить ключ заданого значення в словнику за допомогою розуміння списку, щоб перебирати елементи в словнику та перевіряти, чи значення відповідає заданому значенню. Якщо ключ знайдено, він додається до списку, а перший елемент списку друкується як ключ для даного значення. Якщо значення не знайдено в словнику, друкується повідомлення про те, що воно не знайдено.
Кроки:
- Використовуйте метод items зі словника, щоб прокрутити кожну пару ключ-значення в my_dict.
- Перевірте, чи значення, пов’язане з поточним ключем, дорівнює заданому значенню.
- Якщо він дорівнює, додайте поточний ключ до списку ключів.
- Якщо цикл завершується без пошуку відповідного значення, надрукуйте повідомлення про те, що значення не знайдено.
- Якщо знайдено відповідний ключ, надрукуйте перший ключ у списку.
Python3
# input list> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 112> key_list>=> [key>for> key, val>in> my_dict.items()>if> val>=>=> value]> if> len>(key_list)>>0>:> >print>(>'The key for the value'>, value,>'is'>, key_list[>0>])> else>:> >print>(>'Value not found in dictionary'>)> |
>
>Вихід
The key for the value 112 is Python>
Часова складність: O(N), де n – кількість пар ключ-значення в словнику.
Допоміжний простір: O(K) , де k – кількість ключів, які відповідають заданому значенню.
МЕТОД 6: Використання модуля re
Програма використовує модуль re в Python, щоб знайти ключ у словнику, який відповідає заданому значенню. Він створює шаблон регулярного виразу, який відповідає значенню, оточеному межами слів, а потім використовує функцію next() для повторення елементів у словнику та пошуку значення, яке відповідає шаблону. Якщо збіг знайдено, програма повертає відповідний ключ.
АЛГОРИТМ:
- Створіть шаблон регулярного виразу, який відповідає шуканому значенню, оточений межами слів.
- Використовуйте функцію next(), щоб перебирати елементи в словнику, шукаючи значення, яке відповідає шаблону.
- Якщо збіг знайдено, поверніть відповідний ключ. В іншому випадку поверніть None.
Python3
import> re> # Given input> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 100> # Program code> pattern>=> re.>compile>(r>''> +> str>(value)>+> r>''>)> key>=> next>((k>for> k, v>in> my_dict.items()>if> pattern.search(>str>(v))),>None>)> print>(key)> |
>
>Вихід
Java>
Часова складність: O(N), Створення шаблону регулярного виразу займає O(1) часу. Пошук значення, яке відповідає шаблону в кожній позиції словника, у найгіршому випадку займає O(n) часу, де n – кількість елементів у словнику. Кожна функція next() і оператор if займають O(1) часу. Таким чином, загальна часова складність програми становить O(n).
Допоміжний простір: O(1), Шаблон регулярного виразу та ключова змінна потребують O(1) простору. Для змінної шаблону та виразу генератора всередині функції next() потрібен пробіл O(1). Змінні k і v, які використовуються у виразі генератора, не потребують додаткового місця, оскільки вони створюються як частина ітерації. Таким чином, загальна просторова складність програми становить O(1).