logo

Python | Iegūstiet atslēgu no vērtības vārdnīcā

Apskatīsim, kā Python vārdnīcā iegūt atslēgu pēc vērtības.

Piemērs: One-Liner kods



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

java virknes pievienošana
>

>

Izvade:

Java>

Izņemiet atslēgu no Python vārdnīcas, izmantojot vērtību

1. metode: iegūstiet atslēgu pēc vērtības, izmantojot saraksta izpratni

Saraksta izpratne sastāv no iekavām, kas satur izteiksmi, kas tiek izpildīta katram elementam kopā ar cilpu for, lai atkārtotu katru Python saraksta elementu, lai iegūtu atslēgu no vērtības Vārdnīca .

Python3




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

>

alfabēta cipari
>

Izvade:

key by value: {'for'}>

Laika sarežģītība: O(N)
Palīgtelpa: O(1)

2. metode: Iegūstiet atslēgu pēc vērtības, izmantojot list.index()

The index() metode atgriež atbilstošās vērtības indeksu sarakstā. Šeit izmantotā pieeja ir atrast divus atsevišķus atslēgu un vērtību sarakstus. Pēc tam paņemiet atslēgu, izmantojot pozīciju no vērtības val_listā. Tā kā taustiņam jebkurā pozīcijā N sarakstā key_list būs atbilstoša vērtība pozīcijā N sarakstā 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])>

>

>

Izvade:

java>

Laika sarežģītība: O(1)
Palīgtelpa: O(1)

3. metode: Iegūstiet atslēgu pēc vērtības, izmantojot dict.item()

Mēs varam arī iegūt atslēgu no vērtības, saskaņojot visas vērtības, izmantojot dict.item() un pēc tam izdrukājot atbilstošo atslēgu dotajai vērtībai.

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

>

>

salīdzināms saraksts
Izvade

Java C>

Laika sarežģītība: O(n), kur n ir atslēgu-vērtību pāru skaits vārdnīcā.
Palīgtelpa: O(1), jo funkcijas izmantotā telpa nav atkarīga no ievades vārdnīcas lieluma.

4. metode: lambda un filtra () izmantošana

Šeit ir piemērs funkcijas filter() izmantošanai, lai iegūtu atslēgu, kas atbilst vērtībai vārdnīcā:

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>

>

>

Izvade

Java>

Šajā piemērā funkcija filter() tiek izmantota, lai izveidotu atslēgu sarakstu no my_dict, kur vērtība ir vienāda ar 100. Pēc tam iegūtais saraksts tiek indeksēts pozīcijā 0, lai iegūtu pirmo elementu, kas ir vērtībai atbilstošā atslēga. 100.

Laika sarežģītība: O(n) , jo funkcijai filter() ir jāatkārto visa vārdnīca, lai izveidotu atslēgu sarakstu.
Papildtelpa ir O(n) , jo filtru() izveidotā atslēgu saraksta lielums ir vienāds ar vārdnīcas elementu skaitu.

5. METODE: vienumu metodes izmantošana

Šis kods atrod noteiktas vērtības atslēgu vārdnīcā, izmantojot saraksta izpratni, lai atkārtotu vienumus vārdnīcā un pārbaudītu, vai vērtība atbilst norādītajai vērtībai. Ja atslēga tiek atrasta, tā tiek pievienota sarakstam, un pirmais saraksta elements tiek izdrukāts kā atslēgas dotajai vērtībai. Ja vērtība vārdnīcā nav atrasta, tiek izdrukāts ziņojums, kas norāda, ka tā nav atrasta.

Darbības:

attiecību sastāvs
  1. Izmantojiet vārdnīcas vienumu metodi, lai pārlūkotu katru atslēgas vērtību pāri sadaļā my_dict.
  2. Pārbaudiet, vai ar pašreizējo atslēgu saistītā vērtība ir vienāda ar doto vērtību.
  3. Ja tas ir vienāds, pievienojiet pašreizējo taustiņu atslēgu sarakstam.
  4. Ja cilpa beidzas, neatrodot atbilstošu vērtību, izdrukājiet ziņojumu, kas norāda, ka vērtība nav atrasta.
  5. Ja tika atrasta atbilstošā atslēga, izdrukājiet pirmo atslēgu sarakstā.

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

>

>

Izvade

The key for the value 112 is Python>

Laika sarežģītība: O(N), kur n ir atslēgu un vērtību pāru skaits vārdnīcā.
Palīgtelpa: O(K) , kur k ir atslēgu skaits, kas atbilst dotajai vērtībai.

svm

6. METODE: re moduļa izmantošana

Programma izmanto Python re moduli, lai vārdnīcā atrastu atslēgu, kas atbilst noteiktai vērtībai. Tas izveido regulāras izteiksmes modeli, kas atbilst vērtībai, ko ieskauj vārdu robežas, un pēc tam izmanto funkciju next(), lai atkārtotu vienumus vārdnīcā un meklētu vērtību, kas atbilst modelim. Ja tiek atrasta atbilstība, programma atgriež atbilstošo atslēgu.

ALGORITMS:

  1. Izveidojiet regulārās izteiksmes modeli, kas atbilst mūsu meklētajai vērtībai, ko ieskauj vārdu robežas.
  2. Izmantojiet funkciju next(), lai atkārtotu vienumus vārdnīcā, meklējot vērtību, kas atbilst modelim.
  3. Ja tiek atrasta atbilstība, atgrieziet atbilstošo atslēgu. Pretējā gadījumā atgriezt Nav.

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

>

>

Izvade

Java>

Laika sarežģītība: O(N), Regulārās izteiksmes modeļa izveide aizņem O(1) laiku. Vērtības meklēšana, kas atbilst modelim katrā vārdnīcas vienībā, sliktākajā gadījumā aizņem O(n) laiku, kur n ir vienumu skaits vārdnīcā. Katrai funkcijai next() un if priekšrakstam ir nepieciešams O(1) laiks. Tāpēc programmas kopējā laika sarežģītība ir O(n).

Palīgtelpa: O(1), Regulārās izteiksmes modelim un atslēgas mainīgajam ir nepieciešama vieta O(1). Gan modeļa mainīgajam, gan ģeneratora izteiksmei funkcijā next () ir nepieciešama vieta O (1). Ģeneratora izteiksmē izmantotajiem mainīgajiem k un v nav nepieciešama papildu vieta, jo tie tiek izveidoti iterācijas ietvaros. Tāpēc programmas kopējā telpas sarežģītība ir O(1).