logo

Python | Få nøkkel fra verdi i ordbok

La oss se hvordan du får nøkkelen etter verdi i Python Dictionary.

Eksempel: One-Liner-kode



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

>

>

Produksjon:

Java>

Trekk ut nøkkel fra Python Dictionary ved å bruke verdi

Metode 1: Få nøkkelen etter verdi ved å bruke listeforståelse

En listeforståelse består av parenteser som inneholder uttrykket, som utføres for hvert element sammen med for-løkken for å iterere over hvert element i Python-listen for å hente nøkkelen fra en verdi i Ordbok .

Python3




dic>=>{>'geeks'>:>'A'>,>'for'>:>'B'>,>'geeks'>:>'C'>}> value>=> {i>for> i>in> dic>if> dic[i]>=>=>'B'>}> print>(>'key by value:'>,value)>

>

>

Produksjon:

key by value: {'for'}>

Tidskompleksitet: PÅ)
Hjelpeplass: O(1)

Metode 2: Få nøkkelen etter verdi ved å bruke en list.index()

De index() metode returnerer indeksen for den tilsvarende verdien i en liste. Tilnærmingen som brukes her er å finne to separate lister med nøkler og verdier. Hent deretter nøkkelen ved hjelp av posisjon av verdien i val_listen. Som nøkkel ved enhver posisjon N i key_list vil ha en tilsvarende verdi ved posisjon N i 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])>

>

>

Produksjon:

java>

Tidskompleksitet: O(1)
Ekstra plass: O(1)

Metode 3: Få nøkkelen etter verdi ved å bruke dict.item()

Vi kan også hente nøkkelen fra en verdi ved å matche alle verdiene ved å bruke dict.item() og deretter skrive ut den tilsvarende nøkkelen til den gitte verdien.

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

>

>

Produksjon

Java C>

Tidskompleksitet: O(n), hvor n er antall nøkkelverdi-par i ordboken.
Ekstra plass: O(1), siden plassen som brukes av funksjonen ikke avhenger av størrelsen på inndataordboken.

Metode 4: Bruke lambda og filter()

Her er et eksempel på bruk av filter()-funksjonen for å få nøkkelen som tilsvarer en verdi i en ordbok:

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>

>

>

Produksjon

Java>

I dette eksemplet brukes filter()-funksjonen til å lage en liste med nøkler fra my_dict hvor verdien er lik 100. Den resulterende listen blir deretter indeksert ved posisjon 0 for å få det første elementet, som er nøkkelen som tilsvarer verdien 100.

Tidskompleksitet: O(n) , siden filter()-funksjonen må iterere gjennom hele ordboken for å lage listen over nøkler.
Hjelpemellomrom er O(n) , da listen over nøkler opprettet av filter() har en størrelse som er lik antall elementer i ordboken.

METODE 5:Bruke gjenstandsmetoden

Denne koden finner nøkkelen til en gitt verdi i en ordbok ved å bruke en listeforståelse for å iterere over elementene i ordboken og sjekke om verdien samsvarer med den gitte verdien. Hvis en nøkkel blir funnet, legges den til en liste, og det første elementet i listen skrives ut som nøkkelen for den gitte verdien. Hvis verdien ikke finnes i ordboken, skrives det ut en melding som indikerer at den ikke ble funnet.

Trinn:

  1. Bruk elementmetoden i ordboken til å gå gjennom hvert nøkkelverdi-par i my_dict.
  2. Sjekk om verdien knyttet til gjeldende nøkkel er lik den gitte verdien.
  3. Hvis den er lik, legg til gjeldende nøkkel til en liste over nøkler.
  4. Hvis sløyfen fullføres uten å finne en samsvarende verdi, skriv ut en melding som indikerer at verdien ikke ble funnet.
  5. Hvis en samsvarende nøkkel ble funnet, skriv ut den første nøkkelen i listen.

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

>

>

Produksjon

The key for the value 112 is Python>

Tidskompleksitet: O(N), hvor n er antall nøkkelverdi-par i ordboken.
Hjelpeområde: O(K) , hvor k er antall nøkler som samsvarer med den gitte verdien.

METODE 6:Bruke re modul

Programmet bruker re-modulen i Python for å finne nøkkelen i en ordbok som tilsvarer en gitt verdi. Den lager et regulært uttrykksmønster som samsvarer med verdien omgitt av ordgrenser, og bruker deretter next()-funksjonen til å iterere over elementene i ordboken og søke etter en verdi som samsvarer med mønsteret. Hvis en match blir funnet, returnerer programmet den tilsvarende nøkkelen.

ALGORITME:

  1. Lag et regulært uttrykksmønster som samsvarer med verdien vi leter etter, omgitt av ordgrenser.
  2. Bruk next()-funksjonen til å iterere over elementene i ordboken, og søke etter en verdi som samsvarer med mønsteret.
  3. Hvis en match blir funnet, returner den tilsvarende nøkkelen. Ellers returner ingen.

Python3




eksempel på java-kode

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

>

>

Produksjon

Java>

Tidskompleksitet: O(N), Å lage det regulære uttrykksmønsteret tar O(1) tid. Å søke etter en verdi som samsvarer med mønsteret i hvert ordbokelement tar O(n) tid i verste fall, der n er antall elementer i ordboken. Next()-funksjonen og if-setningen tar hver O(1)-tid. Derfor er den totale tidskompleksiteten til programmet O(n).

Hjelperom: O(1), Det regulære uttrykksmønsteret og nøkkelvariabelen krever hver O(1) plass. Mønstervariabelen og generatoruttrykket inne i next()-funksjonen krever begge O(1)-mellomrom. K- og v-variablene som brukes i generatoruttrykket krever ikke ekstra plass, siden de opprettes som en del av iterasjonen. Derfor er den generelle romkompleksiteten til programmet O(1).