logo

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

>

>

c# exemplu de cod

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

>

numerele alfabetului

>

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

vulpe vs lup

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)>>>>:> >print>(>'The key for the value'>, 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).