Python | Získajte kľúč z hodnoty v slovníku
Pozrime sa, ako získať kľúč podľa hodnoty v slovníku Python.
Príklad: Jednoriadkový kód
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> )])> |
Výkon:
Java
Extrahujte kľúč zo slovníka Python pomocou hodnoty
Metóda 1: Získajte kľúč podľa hodnoty pomocou porozumenia zoznamu
Porozumenie zoznamu pozostáva zo zátvoriek obsahujúcich výraz, ktorý sa vykoná pre každý prvok spolu s cyklom for na iteráciu každého prvku v zozname Python, aby sa získal kľúč z hodnoty v Slovník .
Python3
dic> => {> 'geeks'> :> 'A'> ,> 'for'> :> 'B'> ,> 'geeks'> :> 'C'> }> value> => {i> for> i> in> dic> if> dic[i]> => => 'B'> }> print> (> 'key by value:'> ,value)> |
Výkon:
key by value: {'for'} Časová zložitosť: O(N)
Pomocný priestor: O(1)
Metóda 2: Získajte kľúč podľa hodnoty pomocou funkcie list.index()
The metóda index(). vráti index zodpovedajúcej hodnoty v zozname. Použitý prístup je nájsť dva samostatné zoznamy kľúčov a hodnôt. Potom získajte kľúč pomocou pozíciu z hodnoty v zozname val_list. Ako kľúč na ľubovoľnej pozícii N v key_list bude mať zodpovedajúcu hodnotu na pozícii N v 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])> |
Výkon:
java
Časová zložitosť: O(1)
Pomocný priestor: O(1)
Metóda 3: Získajte kľúč podľa hodnoty pomocou dict.item()
Môžeme tiež získať kľúč z hodnoty tak, že všetky hodnoty porovnáme pomocou dict.item() a potom vytlačíme zodpovedajúci kľúč k danej hodnote.
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> ))> |
Výkon
Java C
Časová zložitosť: O(n), kde n je počet párov kľúč – hodnota v slovníku.
Pomocný priestor: O(1), pretože priestor, ktorý funkcia používa, nezávisí od veľkosti vstupného slovníka.
Metóda 4: Použitie lambda a filter()
Tu je príklad použitia funkcie filter() na získanie kľúča zodpovedajúceho hodnote v slovníku:
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> |
Výkon
Java
V tomto príklade sa funkcia filter() používa na vytvorenie zoznamu kľúčov z my_dict, kde sa hodnota rovná 100. Výsledný zoznam sa potom indexuje na pozícii 0, aby sa získal prvý prvok, ktorým je kľúč zodpovedajúci hodnote 100.
Časová zložitosť: O(n) , pretože funkcia filter() potrebuje iterovať celý slovník, aby vytvorila zoznam kľúčov.
Pomocný priestor je O(n) , pretože zoznam kľúčov vytvorený pomocou filter() má veľkosť rovnajúcu sa počtu prvkov v slovníku.
METÓDA 5: Metóda použitia položiek
Tento kód nájde kľúč danej hodnoty v slovníku pomocou porozumenia zoznamu na iteráciu položiek v slovníku a kontrolu, či sa hodnota zhoduje s danou hodnotou. Ak sa nájde kľúč, pridá sa do zoznamu a prvý prvok zoznamu sa vytlačí ako kľúč pre danú hodnotu. Ak sa hodnota nenájde v slovníku, vytlačí sa hlásenie, že sa nenašla.
Kroky:
- Použite metódu items zo slovníka na precyklenie každého páru kľúč – hodnota v my_dict.
- Skontrolujte, či sa hodnota priradená k aktuálnemu kľúču rovná danej hodnote.
- Ak sa rovná, pridajte aktuálny kľúč do zoznamu kľúčov.
- Ak sa cyklus dokončí bez nájdenia zodpovedajúcej hodnoty, vytlačte správu, že hodnota sa nenašla.
- Ak sa našiel zodpovedajúci kľúč, vytlačte prvý kľúč v zozname.
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'> )> |
Výkon
The key for the value 112 is Python
Časová zložitosť: O(N), kde n je počet párov kľúč – hodnota v slovníku.
Pomocný priestor: O(K) , kde k je počet kľúčov, ktoré zodpovedajú danej hodnote.
METÓDA 6: Použitie modulu re
Program používa modul re v Pythone na nájdenie kľúča v slovníku, ktorý zodpovedá danej hodnote. Vytvorí vzor regulárneho výrazu, ktorý sa zhoduje s hodnotou ohraničenou hranicami slov, potom použije funkciu next() na iteráciu položiek v slovníku a hľadanie hodnoty, ktorá sa zhoduje so vzorom. Ak sa nájde zhoda, program vráti zodpovedajúci kľúč.
ALGORITHM:
- Vytvorte vzor regulárneho výrazu, ktorý zodpovedá hodnote, ktorú hľadáme, obklopený hranicami slov.
- Pomocou funkcie next() môžete iterovať položky v slovníku a hľadať hodnotu, ktorá zodpovedá vzoru.
- Ak sa nájde zhoda, vráťte príslušný kľúč. V opačnom prípade vráťte žiadne.
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)> |
Výkon
Java
Časová zložitosť: O(N), Vytvorenie vzoru regulárneho výrazu trvá O(1) čas. Hľadanie hodnoty, ktorá sa zhoduje so vzorom v každej položke slovníka, trvá O(n) čas v najhoršom prípade, kde n je počet položiek v slovníku. Funkcia next() a príkaz if potrebujú čas O(1). Celková časová náročnosť programu je teda O(n).
Pomocný priestor: O(1), Vzor regulárneho výrazu a kľúčová premenná vyžadujú medzeru O(1). Premenná vzoru a výraz generátora vo funkcii next() vyžadujú priestor O(1). Premenné kav použité vo výraze generátora nevyžadujú ďalší priestor, pretože sú vytvorené ako súčasť iterácie. Celková priestorová zložitosť programu je teda O(1).