logo

Python | Hanki avain arvosta sanakirjasta

Katsotaanpa kuinka saada avain arvon mukaan Python-sanakirjassa.

Esimerkki: One-Liner-koodi



Python 3




mit täydessä muodossa





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

>

>

Lähtö:

Java>

Pura avain Python-sanakirjasta käyttämällä arvoa

Tapa 1: Hanki avain arvon mukaan käyttämällä luettelon ymmärtämistä

Listan ymmärtäminen koostuu suluista, jotka sisältävät lausekkeen, joka suoritetaan kullekin elementille yhdessä for-silmukan kanssa, jotta se iteroidaan jokaisen Python-luettelon elementin yli saadakseen avaimen arvosta Sanakirja .

Python 3




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

>

aakkosten numerot
>

Lähtö:

key by value: {'for'}>

Aika monimutkaisuus: PÄÄLLÄ)
Aputila: O(1)

Tapa 2: Hanki avain arvon mukaan käyttämällä list.index()

The index() -menetelmä palauttaa luettelon vastaavan arvon indeksin. Tässä käytetty lähestymistapa on löytää kaksi erillistä avain- ja arvoluetteloa. Hae sitten avain käyttämällä asema arvosta Val_listissa. Koska avaimella missä tahansa paikassa N avainlistassa on vastaava arvo kohdassa N kohdassa val_list.

Python 3




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

>

>

Lähtö:

java>

Aika monimutkaisuus: O(1)
Aputila: O(1)

Tapa 3: Hanki avain arvon mukaan käyttämällä dict.item()

Voimme myös hakea avaimen arvosta sovittamalla kaikki arvot komennolla dict.item() ja tulostamalla sitten vastaavan avaimen annettuun arvoon.

Python 3




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

>

>

Lähtö

Java C>

Aika monimutkaisuus: O(n), missä n on avainarvoparien lukumäärä sanakirjassa.
Aputila: O(1), koska funktion käyttämä tila ei riipu syöttösanakirjan koosta.

Tapa 4: lambda- ja suodatin()

Tässä on esimerkki filter()-funktion käyttämisestä sanakirjan arvoa vastaavan avaimen saamiseksi:

Python 3


0,0625 murtolukuna



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>

>

>

Lähtö

Java>

Tässä esimerkissä filter()-funktiota käytetään luomaan avainluettelo tiedostosta my_dict, jossa arvo on 100. Tuloksena oleva luettelo indeksoidaan sitten kohtaan 0, jotta saadaan ensimmäinen elementti, joka on arvoa vastaava avain. 100.

Aika monimutkaisuus: O(n) , koska filter()-funktion on toistettava koko sanakirja luodakseen avainluettelon.
Aputila on O(n) , koska filter():n luoman avainluettelon koko on yhtä suuri kuin sanakirjan elementtien lukumäärä.

MENETELMÄ 5: Käytä esinemenetelmää

Tämä koodi löytää tietyn arvon avaimen sanakirjasta käyttämällä luettelon ymmärtämistä sanakirjan kohteiden toistamiseen ja tarkistamaan, vastaako arvo annettua arvoa. Jos avain löytyy, se lisätään listaan ​​ja listan ensimmäinen elementti tulostetaan annetun arvon avaimeksi. Jos arvoa ei löydy sanakirjasta, tulostetaan viesti, joka ilmoittaa, että sitä ei löydy.

Askeleet:

  1. Käytä sanakirjan Item-menetelmää kunkin avain-arvoparin läpi käymiseen my_dict-kohdassa.
  2. Tarkista, onko nykyiseen avaimeen liittyvä arvo sama kuin annettu arvo.
  3. Jos se on yhtä suuri, lisää nykyinen avain näppäinluetteloon.
  4. Jos silmukka päättyy löytämättä vastaavaa arvoa, tulosta viesti, joka ilmoittaa, että arvoa ei löydy.
  5. Jos vastaava avain löytyi, tulosta luettelon ensimmäinen avain.

Python 3




mikä on pino javassa
# 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'>)>

>

>

Lähtö

The key for the value 112 is Python>

Aika monimutkaisuus: O(N), missä n on avainarvoparien määrä sanakirjassa.
Aputila: O(K) , jossa k on annettua arvoa vastaavien avainten määrä.

MENETELMÄ 6: Re-moduulin käyttö

Ohjelma käyttää Pythonin re-moduulia löytääkseen sanakirjasta avaimen, joka vastaa annettua arvoa. Se luo säännöllisen lausekkeen kuvion, joka vastaa sanarajojen ympäröimää arvoa, ja käyttää sitten next()-funktiota iteroidakseen sanakirjan kohteet ja etsiä kuviota vastaavan arvon. Jos vastaavuus löytyy, ohjelma palauttaa vastaavan avaimen.

ALGORITMI:

  1. Luo säännöllinen lausekemalli, joka vastaa etsimäämme arvoa sanarajojen ympäröimänä.
  2. Käytä next()-funktiota iteroidaksesi sanakirjan kohteet ja etsiä arvoa, joka vastaa kuviota.
  3. Jos vastaavuus löytyy, palauta vastaava avain. Muussa tapauksessa palauta Ei mitään.

Python 3




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

paikallinen java
>

>

Lähtö

Java>

Aika monimutkaisuus: O(N), Säännöllisen lausekkeen mallin luominen vie O(1) aikaa. Mallia vastaavan arvon etsiminen kustakin sanakirjan alkiosta vie O(n) aikaa pahimmassa tapauksessa, missä n on sanakirjan kohteiden lukumäärä. Next()-funktio ja if-lause käyttävät kumpikin O(1)-aikaa. Siksi ohjelman kokonaisaika monimutkaisuus on O(n).

Aputila: O(1), Säännöllinen lausekekuvio ja avainmuuttuja vaativat kumpikin O(1)-tilan. Kuviomuuttuja ja generaattorilauseke next()-funktion sisällä vaativat molemmat O(1)-tilan. Generaattorilausekkeessa käytetyt k- ja v-muuttujat eivät vaadi lisätilaa, koska ne luodaan osana iteraatiota. Siksi ohjelman kokonaistilan monimutkaisuus on O(1).