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)> |
>
premenné nginx
>
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])> |
>
čísla abecedy
>
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
reťazec na celé číslo java
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).