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
r v jeziku c
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)> |
>
številke abecede
>
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
pripravite se na testni mockito
# 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
kaj pomeni xd
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)> |
razlika med večerjo in večerjo
>
>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).