logo

Python | Hent nøgle fra værdi i ordbog

Lad os se, hvordan du får nøglen efter værdi 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>)])>

>

>

Produktion:

Java>

Uddrag nøgle fra Python Dictionary ved hjælp af værdi

Metode 1: Få nøglen efter værdi ved hjælp af listeforståelse

En listeforståelse består af parenteser indeholdende udtrykket, som udføres for hvert element sammen med for-løkken for at iterere over hvert element i Python-listen for at få nøglen fra en værdi i Ordbog .

Python3




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

>

>

Produktion:

key by value: {'for'}>

Tidskompleksitet: PÅ)
Hjælpeplads: O(1)

Metode 2: Hent nøglen efter værdi ved hjælp af en list.index()

Det index() metode returnerer indekset for den tilsvarende værdi i en liste. Den fremgangsmåde, der bruges her, er at finde to separate lister over nøgler og værdier. Hent derefter nøglen ved hjælp af position af værdien i val_listen. Som nøgle ved enhver position N i key_list vil have en tilsvarende værdi ved position 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])>

>

>

Produktion:

java>

Tidskompleksitet: O(1)
Hjælpeplads: O(1)

Metode 3: Hent nøglen efter værdi ved hjælp af dict.item()

Vi kan også hente nøglen fra en værdi ved at matche alle værdierne ved hjælp af dict.item() og derefter udskrive den tilsvarende nøgle til den givne værdi.

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

>

>

Produktion

Java C>

Tidskompleksitet: O(n), hvor n er antallet af nøgleværdi-par i ordbogen.
Hjælpeplads: O(1), da pladsen, der bruges af funktionen, ikke afhænger af størrelsen af ​​inputordbogen.

Metode 4: Brug af lambda og filter()

Her er et eksempel på brug af filter()-funktionen til at få nøglen, der svarer til en værdi i en ordbog:

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>

>

>

Produktion

Java>

I dette eksempel bruges filter()-funktionen til at oprette en liste af nøgler fra my_dict, hvor værdien er lig med 100. Den resulterende liste indekseres derefter ved position 0 for at få det første element, som er den nøgle, der svarer til værdien 100.

Tidskompleksitet: O(n) , da filter()-funktionen skal iterere gennem hele ordbogen for at oprette listen over nøgler.
Hjælperum er O(n) , da listen over nøgler oprettet af filter() har en størrelse svarende til antallet af elementer i ordbogen.

METODE 5:Brug af emnemetoden

Denne kode finder nøglen til en given værdi i en ordbog ved at bruge en listeforståelse til at iterere over emnerne i ordbogen og kontrollere, om værdien matcher den givne værdi. Hvis en nøgle findes, tilføjes den til en liste, og det første element på listen udskrives som nøglen for den givne værdi. Hvis værdien ikke findes i ordbogen, udskrives en meddelelse, der angiver, at den ikke blev fundet.

Trin:

  1. Brug elementmetoden i ordbogen til at gå gennem hvert nøgleværdi-par i my_dict.
  2. Tjek om værdien forbundet med den aktuelle nøgle er lig med den givne værdi.
  3. Hvis den er ens, skal du tilføje den aktuelle nøgle til en liste over nøgler.
  4. Hvis løkken afsluttes uden at finde en matchende værdi, skal du udskrive en meddelelse, der angiver, at værdien ikke blev fundet.
  5. Hvis der blev fundet en matchende nøgle, skal du udskrive den første nøgle på 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'>)>

>

>

Produktion

The key for the value 112 is Python>

Tidskompleksitet: O(N), hvor n er antallet af nøgleværdi-par i ordbogen.
Hjælpeplads: O(K) , hvor k er antallet af nøgler, der matcher den givne værdi.

METODE 6:Brug af re-modul

Programmet bruger re-modulet i Python til at finde nøglen i en ordbog, der svarer til en given værdi. Den opretter et regulært udtryksmønster, der matcher værdien omgivet af ordgrænser, og bruger derefter funktionen next() til at iterere over elementerne i ordbogen og søge efter en værdi, der matcher mønsteret. Hvis der findes et match, returnerer programmet den tilsvarende nøgle.

ALGORITME:

  1. Opret et regulært udtryksmønster, der matcher den værdi, vi leder efter, omgivet af ordgrænser.
  2. Brug funktionen next() til at iterere over emnerne i ordbogen og søge efter en værdi, der matcher mønsteret.
  3. Hvis der findes et match, returnerer du den tilsvarende nøgle. Ellers returneres Ingen.

Python3




prøve 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)>

>

>

Produktion

Java>

Tidskompleksitet: O(N), Oprettelse af det regulære udtryksmønster tager O(1) tid. At søge efter en værdi, der matcher mønsteret i hvert ordbogselement, tager O(n) tid i værste fald, hvor n er antallet af emner i ordbogen. Funktionen next() og if-sætningen tager hver O(1) tid. Derfor er programmets samlede tidskompleksitet O(n).

Hjælpeplads: O(1), Det regulære udtryksmønster og nøglevariablen kræver hver O(1) mellemrum. Mønstervariablen og generatorudtrykket inde i funktionen next() kræver begge O(1)-mellemrum. K- og v-variablerne, der bruges i generatorudtrykket, kræver ikke yderligere plads, da de oprettes som en del af iterationen. Derfor er programmets overordnede rumkompleksitet O(1).