logo

Python | Få nyckel från värde i ordbok

Låt oss se hur du får nyckeln efter värde i Python Dictionary.

Exempel: One-Liner-kod



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>

Extrahera nyckel från Python Dictionary med hjälp av Value

Metod 1: Få nyckeln efter värde med hjälp av listförståelse

En listförståelse består av parenteser som innehåller uttrycket, som exekveras för varje element tillsammans med for-loopen för att iterera över varje element i Python-listan för att få nyckeln från ett värde i Lexikon .

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

Tidskomplexitet: PÅ)
Hjälputrymme: O(1)

Metod 2: Hämta nyckeln efter värde med hjälp av en list.index()

De index() metod returnerar indexet för motsvarande värde i en lista. Metoden som används här är att hitta två separata listor med nycklar och värden. Hämta sedan nyckeln med hjälp av placera av värdet i val_listan. Som nyckel vid valfri position N i key_list kommer att ha ett motsvarande värde vid 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>

Tidskomplexitet: O(1)
Extra utrymme: O(1)

Metod 3: Få nyckeln efter värde med dict.item()

Vi kan också hämta nyckeln från ett värde genom att matcha alla värden med hjälp av dict.item() och sedan skriva ut motsvarande nyckel till det givna värdet.

Python3


stående



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

Tidskomplexitet: O(n), där n är antalet nyckel-värdepar i ordboken.
Extra utrymme: O(1), eftersom utrymmet som används av funktionen inte beror på storleken på inmatningslexikonet.

siffrorna i alfabetet

Metod 4: Använd lambda och filter()

Här är ett exempel på hur du använder filter()-funktionen för att få nyckeln som motsvarar ett värde 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>

>

>

Produktion

Java>

I det här exemplet används filter()-funktionen för att skapa en lista med nycklar från my_dict där värdet är lika med 100. Den resulterande listan indexeras sedan vid position 0 för att få det första elementet, vilket är nyckeln som motsvarar värdet 100.

Tidskomplexitet: O(n) , eftersom filter()-funktionen måste iterera genom hela ordlistan för att skapa listan med nycklar.
Hjälputrymme är O(n) , eftersom listan med nycklar som skapats av filter() har en storlek som är lika med antalet element i ordboken.

METOD 5: Att använda objektmetoden

Den här koden hittar nyckeln till ett givet värde i en ordbok genom att använda en listförståelse för att iterera över objekten i ordboken och kontrollera om värdet matchar det givna värdet. Om en nyckel hittas läggs den till i en lista och det första elementet i listan skrivs ut som nyckel för det givna värdet. Om värdet inte hittas i ordboken skrivs ett meddelande ut som anger att det inte hittades.

Steg:

  1. Använd objektmetoden i ordboken för att gå igenom varje nyckel-värdepar i my_dict.
  2. Kontrollera om värdet för den aktuella nyckeln är lika med det angivna värdet.
  3. Om den är lika, lägg till den aktuella nyckeln till en lista med nycklar.
  4. Om slingan slutförs utan att hitta ett matchande värde, skriv ut ett meddelande som anger att värdet inte hittades.
  5. Om en matchande nyckel hittades, skriv ut den första nyckeln i listan.

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>

Tidskomplexitet: O(N), där n är antalet nyckel-värdepar i ordboken.
Hjälputrymme: O(K) , där k är antalet nycklar som matchar det givna värdet.

METOD 6: Använda re module

Programmet använder re-modulen i Python för att hitta nyckeln i en ordbok som motsvarar ett givet värde. Den skapar ett reguljärt uttrycksmönster som matchar värdet omgivet av ordgränser, och använder sedan funktionen next() för att iterera över objekten i ordboken och söka efter ett värde som matchar mönstret. Om en matchning hittas returnerar programmet motsvarande nyckel.

ALGORITM:

  1. Skapa ett reguljärt uttrycksmönster som matchar värdet vi letar efter, omgivet av ordgränser.
  2. Använd funktionen next() för att iterera över objekten i ordboken och söka efter ett värde som matchar mönstret.
  3. Om en matchning hittas, returnera motsvarande nyckel. I annat fall returnerar ingen.

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

>

>

Produktion

Java>

Tidskomplexitet: O(N), Att skapa det reguljära uttrycksmönstret tar O(1) tid. Att söka efter ett värde som matchar mönstret i varje ordbokspost tar O(n) tid i värsta fall, där n är antalet poster i ordboken. Next()-funktionen och if-satsen tar vardera O(1)-tid. Därför är den totala tidskomplexiteten för programmet O(n).

Hjälputrymme: O(1), Det reguljära uttrycksmönstret och nyckelvariabeln kräver vardera O(1)-utrymme. Mönstervariabeln och generatoruttrycket inuti next()-funktionen kräver båda O(1)-mellanslag. Variablerna k och v som används i generatoruttrycket kräver inte ytterligare utrymme, eftersom de skapas som en del av iterationen. Därför är den totala rymdkomplexiteten för programmet O(1).