logo

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)>

>

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:

  1. Použite metódu items zo slovníka na precyklenie každého páru kľúč – hodnota v my_dict.
  2. Skontrolujte, či sa hodnota priradená k aktuálnemu kľúču rovná danej hodnote.
  3. Ak sa rovná, pridajte aktuálny kľúč do zoznamu kľúčov.
  4. Ak sa cyklus dokončí bez nájdenia zodpovedajúcej hodnoty, vytlačte správu, že hodnota sa nenašla.
  5. 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:

  1. Vytvorte vzor regulárneho výrazu, ktorý zodpovedá hodnote, ktorú hľadáme, obklopený hranicami slov.
  2. Pomocou funkcie next() môžete iterovať položky v slovníku a hľadať hodnotu, ktorá zodpovedá vzoru.
  3. 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).