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:
- Utilizați metoda itemilor din dicționar pentru a parcurge fiecare pereche cheie-valoare din my_dict.
- Verificați dacă valoarea asociată cheii curente este egală cu valoarea dată.
- Dacă este egală, adăugați cheia curentă la o listă de chei.
- 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ă.
- 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:
- Creați un model de expresie regulată care să se potrivească cu valoarea pe care o căutăm, înconjurat de limitele cuvintelor.
- Utilizați funcția next() pentru a itera elementele din dicționar, căutând o valoare care să se potrivească cu modelul.
- 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).