logo

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

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:

  1. Uporabite metodo elementov iz slovarja za pomik skozi vsak par ključ-vrednost v my_dict.
  2. Preverite, ali je vrednost, povezana s trenutnim ključem, enaka dani vrednosti.
  3. Če je enak, dodajte trenutni ključ na seznam ključev.
  4. Če se zanka zaključi, ne da bi našli ujemajočo se vrednost, natisnite sporočilo, da vrednost ni bila najdena.
  5. Č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:

  1. Ustvarite vzorec regularnega izraza, ki se ujema z vrednostjo, ki jo iščemo, obdan z besednimi mejami.
  2. Uporabite funkcijo next() za ponavljanje elementov v slovarju in iskanje vrednosti, ki se ujema z vzorcem.
  3. Č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).