Python | Get key from value în dicţionar

Să vedem cum să obținem cheia după valoare în dicționarul Python.

Exemplu: cod One-Liner

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

Ieșire:

Java 

Extrageți cheia din dicționarul Python folosind Value

Metoda 1: Obțineți cheia după valoare folosind înțelegerea listei

O listă de înțelegere constă din paranteze care conțin expresia, care este executată pentru fiecare element împreună cu bucla for pentru a repeta peste fiecare element din lista Python pentru a obține cheia de la o valoare din Dicţionar .

Python3




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

Ieșire:

key by value: {'for'} 

Complexitatea timpului: PE)
Spațiu auxiliar: O(1)

Metoda 2: Obțineți cheia după valoare folosind un list.index()

The metoda index(). returnează indexul valorii corespunzătoare dintr-o listă. Abordarea folosită aici este de a găsi două liste separate de chei și valori. Apoi preluați cheia folosind poziţie a valorii în val_list. Ca cheie în orice poziție N din key_list va avea o valoare corespunzătoare la poziția N din 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])>

Ieșire:

java 

Complexitatea timpului: O(1)
Spatiu auxiliar: O(1)

Metoda 3: Obțineți cheia după valoare folosind dict.item()

De asemenea, putem prelua cheia dintr-o valoare potrivind toate valorile folosind dict.item() și apoi imprimând cheia corespunzătoare la valoarea dată.

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

Ieșire

Java C 

Complexitatea timpului: O(n), unde n este numărul de perechi cheie-valoare din dicționar.
Spatiu auxiliar: O(1), deoarece spațiul folosit de funcție nu depinde de dimensiunea dicționarului de intrare.

Metoda 4: Folosind lambda și filter()

Iată un exemplu de utilizare a funcției filter() pentru a obține cheia corespunzătoare unei valori dintr-un dicționar:

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>

Ieșire

Java 

În acest exemplu, funcția filter() este folosită pentru a crea o listă de chei din my_dict unde valoarea este egală cu 100. Lista rezultată este apoi indexată la poziția 0 pentru a obține primul element, care este cheia corespunzătoare valorii. 100.

Complexitatea timpului: O(n) , deoarece funcția filter() trebuie să parcurgă întregul dicționar pentru a crea lista de chei.
Spațiul auxiliar este O(n) , deoarece lista de chei creată de filter() are o dimensiune egală cu numărul de elemente din dicționar.

METODA 5: Folosirea metodei itemilor

Acest cod găsește cheia unei valori date într-un dicționar folosind o listă de înțelegere pentru a itera elementele din dicționar și a verifica dacă valoarea se potrivește cu valoarea dată. Dacă este găsită o cheie, aceasta este adăugată la o listă, iar primul element al listei este tipărit ca cheie pentru valoarea dată. Dacă valoarea nu este găsită în dicționar, este tipărit un mesaj care indică faptul că nu a fost găsită.

Pași:

  1. Utilizați metoda itemilor din dicționar pentru a parcurge fiecare pereche cheie-valoare din my_dict.
  2. Verificați dacă valoarea asociată cheii curente este egală cu valoarea dată.
  3. Dacă este egală, adăugați cheia curentă la o listă de chei.
  4. Dacă bucla se finalizează fără a găsi o valoare potrivită, tipăriți un mesaj care indică faptul că valoarea nu a fost găsită.
  5. Dacă a fost găsită o cheie potrivită, tipăriți prima cheie din listă.

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)>>>> , value,> 'is'> , key_list[> 0> ])> else> :> > print> (> 'Value not found in dictionary'> )>

Ieșire

The key for the value 112 is Python 

Complexitatea timpului: O(N), unde n este numărul de perechi cheie-valoare din dicționar.
Spațiu auxiliar: O(K) , unde k este numărul de chei care se potrivesc cu valoarea dată.

METODA 6: Folosind modulul re

Programul folosește modulul re din Python pentru a găsi cheia într-un dicționar care corespunde unei valori date. Creează un model de expresie regulată care se potrivește cu valoarea înconjurată de granițele de cuvinte, apoi folosește funcția next() pentru a itera elementele din dicționar și a căuta o valoare care se potrivește cu modelul. Dacă se găsește o potrivire, programul returnează cheia corespunzătoare.

ALGORITM:

  1. Creați un model de expresie regulată care să se potrivească cu valoarea pe care o căutăm, înconjurat de limitele cuvintelor.
  2. Utilizați funcția next() pentru a itera elementele din dicționar, căutând o valoare care să se potrivească cu modelul.
  3. Dacă se găsește o potrivire, returnați cheia corespunzătoare. În caz contrar, returnați Niciunul.

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

Ieșire

Java 

Complexitatea timpului: O(N), Crearea modelului de expresie regulată necesită timp O(1). Căutarea unei valori care se potrivește cu modelul din fiecare articol din dicționar durează O(n) timp în cel mai rău caz, unde n este numărul de articole din dicționar. Funcția next() și instrucțiunea if iau fiecare timp O(1). Prin urmare, complexitatea de timp globală a programului este O(n).

Spațiu auxiliar: O(1), Modelul de expresie regulată și variabila cheie necesită fiecare spațiu O(1). Variabila de tipar și expresia generatoare din interiorul funcției next() necesită ambele spațiu O(1). Variabilele k și v utilizate în expresia generatorului nu necesită spațiu suplimentar, deoarece sunt create ca parte a iterației. Prin urmare, complexitatea spațială generală a programului este O(1).