Kun annetaan luettelo, kirjoita Python-ohjelma, joka muuntaa annetun luettelon sanakirjaksi siten, että kaikilla parittomilla elementeillä on avain ja parillisilla elementeillä on arvo. Koska Python sanakirja on järjestämätön, tulos voi olla missä tahansa järjestyksessä.
Esimerkki
Input : ['a', 1, 'b', 2, 'c', 3] Output: {'a': 1, 'b': 2, 'c': 3} Explaination : In the input we have a list of element which then is conerted into key value pairs of dictonary in the output> Muunna luettelo Python-sanakirjaksi
Alla on menetelmät, joita käsittelemme tässä artikkelissa:
- Käyttää silmukka
- Käyttämällä sanele Ymmärtäminen
- Käyttämällä postinumero() Menetelmä
- Käyttämällä Lambda toiminto
- Käyttämällä Listan ymmärtäminen ja Viipalointi
- Käyttämällä Itert-työkalut
Muunna luettelo sanakirjaksi silmukan avulla
Tämä menetelmä toimii alustamalla tyhjä sanakirja ja iteroidaan sitten luettelon läpi vaiheessa 2. Jokaisessa iteraatiossa avain-arvo-pari lisätään sanakirjaan käyttämällä nykyistä elementtiä avaimena ja seuraavaa elementtiä arvona. Lopuksi sanakirja palautetaan tuloksena.
Python 3
def> convert(lst):> >res_dict>=> {}> >for> i>in> range>(>0>,>len>(lst),>2>):> >res_dict[lst[i]]>=> lst[i>+> 1>]> >return> res_dict> lst>=> [>'a'>,>1>,>'b'>,>2>,>'c'>,>3>]> print>(convert(lst))> |
>
>
Lähtö
{'a': 1, 'b': 2, 'c': 3}> Aika monimutkaisuus: O(n), missä n on syöteluettelon pituus.
Aputila: O(n), missä n on syöteluettelon pituus.
Lista sanakirjakeskusteluun käyttämällä sanan ymmärtämistä
Voimme muuntaa luettelon sanakirjaksi sanele ymmärtäminen ja tee avain:arvo-pari peräkkäisistä elementeistä. Kirjoita lopuksi luettelo kirjaimella sanele tyyppi.
Python 3
def> Convert(lst):> >res_dct>=> {lst[i]: lst[i>+> 1>]>for> i>in> range>(>0>,>len>(lst),>2>)}> >return> res_dct> > # Driver code> lst>=> [>'a'>,>1>,>'b'>,>2>,>'c'>,>3>]> print>(Convert(lst))> |
>
>Lähtö
{'a': 1, 'b': 2, 'c': 3}> Aika monimutkaisuus: O(n), missä n on syöteluettelon pituus.
Aputila: O(n), missä n on syöteluettelon pituus.
Luettelon muuntaminen sanakirjaksi sisään laulaa postinumero() Menetelmä
Luo ensin iteraattori ja alusta se muuttujaksi 'it'. Käytä sitten postinumero menetelmä , zip avaimet ja arvot yhteen. Kirjoita lopuksi se sanele tyyppi.
Python 3
java tapauslausunto
def> Convert(a):> >it>=> iter>(a)> >res_dct>=> dict>(>zip>(it, it))> >return> res_dct> # Driver code> lst>=> [>'a'>,>1>,>'b'>,>2>,>'c'>,>3>]> print>(Convert(lst))> |
>
>Lähtö
{'a': 1, 'b': 2, 'c': 3}> Aika monimutkaisuus: O(n), missä n on syöttölistan a pituus.
Aputila: O(n), missä n on syöttölistan a pituus.
Listaa sanakirjakeskusteluihin lambda-funktiolla
Luo ensin joukko avaimia ja arvoja käyttämällä taulukon viipalointia. Käytä sitten karttamenetelmä kanssa lambda muodostaa joukon monikko avainarvolla paris. Lopuksi kirjoita se sanelukirjoitukseen.
Python
def> Convert(lst):> >res_dct>=> map>(>lambda> i: (lst[i], lst[i>+>1>]),>range>(>len>(lst)>->1>)[::>2>])> >return> dict>(res_dct)> # Driver code> lst>=> [>'a'>,>1>,>'b'>,>2>,>'c'>,>3>]> print>(Convert(lst))> |
1 miljoonan numero
>
>Lähtö
{'a': 1, 'c': 3, 'b': 2}> Aika monimutkaisuus: O(n), missä n on avainarvoparien lukumäärä sanakirjassa.
Aputila: O(n), tallentaaksesi avaimet ja arvot sanakirjaan.
Luettelon muuntaminen sanakirjaksi käyttämällä luettelon ymmärtämistä ja viipalointia
Viipale syöttöluetteloa saadaksesi näppäinluettelon käyttämällä lst[::2]. Tämä ottaa joka toisen elementin luettelon ensimmäisestä elementistä alkaen. Viipaloi syöteluettelo saadaksesi arvoluettelon komennolla lst[1::2]. Tämä ottaa joka toisen elementin luettelon toisesta elementistä alkaen. Luo sanakirja käyttämällä a sanakirjan ymmärtäminen joka toistuu avainluettelon indeksien yli ja liittää jokaisen avaimen sen vastaavaan arvoon arvoluettelosta.
Palauta tuloksena oleva sanakirja.
Python 3
def> convert(lst):> >keys>=> lst[::>2>]># slice the list to get keys> >values>=> lst[>1>::>2>]># slice the list to get values> >res_dict>=> {keys[i]: values[i]>for> i>in> range>(>len>(keys))}> >return> res_dict> lst>=> [>'a'>,>1>,>'b'>,>2>,>'c'>,>3>]> print>(convert(lst))># {'a': 1, 'b': 2, 'c': 3}> |
>
>Lähtö
{'a': 1, 'b': 2, 'c': 3}> Aika monimutkaisuus: Päällä)
Aputila: Päällä).
Muunna luettelo sanakirjaksi Itertoolsin avulla
Tuo itert-työkalut moduuli .Käytä zip_longest() toimintoa luodaksesi luettelon monista alkuperäisestä luettelosta. Tämä toiminto ryhmittelee elementit pareiksi, vaikka luettelon pituus olisi pariton.Luo sanakirja monikkoluettelosta sanakirjan ymmärtämisen avulla.Palauta sanakirja.
Alla on yllä olevan lähestymistavan toteutus:
Python 3
import> itertools> def> convert(lst):> >pairs>=> itertools.zip_longest(>*>[>iter>(lst)]>*> 2>, fillvalue>=>None>)> >dct>=> {key: value>for> key, value>in> pairs}> >return> dct> lst>=> [>'a'>,>1>,>'b'>,>2>,>'c'>,>3>]> print>(convert(lst))> |
>
>Lähtö
{'a': 1, 'b': 2, 'c': 3}> Aika monimutkaisuus: Päällä)
Aputila: O(n) (tallentaa monikkoluettelon)