Python | Pridobite ključ iz vrednosti v slovarju
Poglejmo, kako pridobiti ključ po vrednosti v slovarju Python.
Primer: enovrstična koda
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> )])> |
Izhod:
Java
Izvlecite ključ iz slovarja Python z uporabo vrednosti
1. način: Pridobite ključ po vrednosti z razumevanjem seznama
Razumevanje seznama je sestavljeno iz oklepajev, ki vsebujejo izraz, ki se izvede za vsak element skupaj z zanko for za ponovitev vsakega elementa na seznamu Python, da se pridobi ključ iz vrednosti v Slovar .
Python3
dic> => {> 'geeks'> :> 'A'> ,> 'for'> :> 'B'> ,> 'geeks'> :> 'C'> }> value> => {i> for> i> in> dic> if> dic[i]> => => 'B'> }> print> (> 'key by value:'> ,value)> |
Izhod:
key by value: {'for'} Časovna zapletenost: O(N)
Pomožni prostor: O(1)
2. način: Pridobite ključ po vrednosti z list.index()
The metoda index(). vrne indeks ustrezne vrednosti na seznamu. Tu uporabljen pristop je iskanje dveh ločenih seznamov ključev in vrednosti. Nato prinesite ključ z uporabo položaj vrednosti na seznamu val_list. Kot ključ na katerem koli položaju N v seznamu_ključev bo imel ustrezno vrednost na položaju N v seznamu_valov.
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])> |
Izhod:
java
Časovna zahtevnost: O(1)
Pomožni prostor: O(1)
3. način: Pridobite ključ po vrednosti z dict.item()
Ključ lahko pridobimo tudi iz vrednosti tako, da povežemo vse vrednosti z uporabo dict.item() in nato natisnemo ustrezen ključ na podano vrednost.
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> ))> |
Izhod
Java C
Časovna zahtevnost: O(n), kjer je n število parov ključ-vrednost v slovarju.
Pomožni prostor: O(1), saj prostor, ki ga uporablja funkcija, ni odvisen od velikosti vhodnega slovarja.
4. način: Uporaba lambda in filter()
Tukaj je primer uporabe funkcije filter() za pridobitev ključa, ki ustreza vrednosti v slovarju:
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> |
Izhod
Java
V tem primeru je funkcija filter() uporabljena za ustvarjanje seznama ključev iz my_dict, kjer je vrednost enaka 100. Nastali seznam se nato indeksira na položaju 0, da dobimo prvi element, ki je ključ, ki ustreza vrednosti 100.
Časovna zahtevnost: O(n) , saj mora funkcija filter() iterirati skozi celoten slovar, da ustvari seznam ključev.
Pomožni prostor je O(n) , saj ima seznam ključev, ki jih ustvari filter(), velikost, ki je enaka številu elementov v slovarju.
METODA 5: Metoda z uporabo elementov
Ta koda najde ključ dane vrednosti v slovarju z uporabo razumevanja seznama za ponavljanje elementov v slovarju in preverjanje, ali se vrednost ujema z dano vrednostjo. Če je ključ najden, je dodan na seznam, prvi element seznama pa je natisnjen kot ključ za dano vrednost. Če vrednosti ni mogoče najti v slovarju, se natisne sporočilo, da ni bila najdena.
Koraki:
- Uporabite metodo elementov iz slovarja za pomik skozi vsak par ključ-vrednost v my_dict.
- Preverite, ali je vrednost, povezana s trenutnim ključem, enaka dani vrednosti.
- Če je enak, dodajte trenutni ključ na seznam ključev.
- Če se zanka zaključi, ne da bi našli ujemajočo se vrednost, natisnite sporočilo, da vrednost ni bila najdena.
- Če je bil najden ustrezen ključ, natisnite prvi ključ na seznamu.
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'> )> |
Izhod
The key for the value 112 is Python
Časovna zahtevnost: O(N), kjer je n število parov ključ-vrednost v slovarju.
Pomožni prostor: O(K) , kjer je k število ključev, ki ustrezajo dani vrednosti.
METODA 6: Uporaba modula re
Program uporablja modul re v Pythonu, da poišče ključ v slovarju, ki ustreza dani vrednosti. Ustvari vzorec regularnega izraza, ki se ujema z vrednostjo, obdano z mejami besed, nato pa uporabi funkcijo next() za ponavljanje elementov v slovarju in iskanje vrednosti, ki se ujema z vzorcem. Če se najde ujemanje, program vrne ustrezen ključ.
ALGORITEM:
- Ustvarite vzorec regularnega izraza, ki se ujema z vrednostjo, ki jo iščemo, obdan z besednimi mejami.
- Uporabite funkcijo next() za ponavljanje elementov v slovarju in iskanje vrednosti, ki se ujema z vzorcem.
- Če se najde ujemanje, vrni ustrezen ključ. V nasprotnem primeru vrni 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)> |
Izhod
Java
Časovna zahtevnost: O(N), Ustvarjanje vzorca regularnega izraza traja O(1) časa. Iskanje vrednosti, ki se ujema z vzorcem v vsaki slovarski postavki, v najslabšem primeru traja O(n) časa, kjer je n število postavk v slovarju. Vsaka funkcija next() in stavek if potrebujeta O(1) časa. Zato je celotna časovna zahtevnost programa O(n).
Pomožni prostor: O(1), Vzorec regularnega izraza in ključna spremenljivka zahtevata O(1) prostora. Spremenljivka vzorca in generatorski izraz znotraj funkcije next() zahtevata O(1) prostora. Spremenljivki k in v, uporabljeni v izrazu generatorja, ne zahtevata dodatnega prostora, saj sta ustvarjeni kot del ponovitve. Zato je celotna prostorska kompleksnost programa O(1).