Givet en lista, skriv ett Python-program för att konvertera den givna listan till en ordbok så att alla udda element har nyckeln och jämna nummerelement har värdet. Sedan Pytonorm ordboken är oordnad, utdata kan vara i valfri ordning.
Exempel
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> Konvertera en lista till Dictionary Python
Nedan är metoderna som vi kommer att täcka i den här artikeln:
försök fånga i java
- Använder en slinga
- Använder sig av dikt Förståelse
- Använder sig av blixtlås() Metod
- Använder sig av Lambda funktion
- Använder sig av Listförståelse och Skiva
- Använder sig av Itertools
Konvertera en lista till en ordbok med en loop
Denna metod fungerar genom att initiera en tom lexikon och sedan iterera genom listan i steg 2. I varje iteration läggs nyckel-värdeparet till i ordboken med det aktuella elementet som nyckel och nästa element som värdet. Slutligen returneras ordboken som resultat.
Python3
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))> |
>
>
Produktion
{'a': 1, 'b': 2, 'c': 3}> Tidskomplexitet: O(n), där n är längden på inmatningslistan.
Extra utrymme: O(n), där n är längden på inmatningslistan.
Lista till ordbokssamtal använder diktförståelse
För att konvertera en lista till ordbok kan vi använda diktförståelse och gör ett nyckel:värde-par av på varandra följande element. Skriv slutligen listan till dikt typ.
Python3
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))> |
>
>Produktion
{'a': 1, 'b': 2, 'c': 3}> Tidskomplexitet: O(n), där n är längden på inmatningslistan.
Extra utrymme: O(n), där n är längden på inmatningslistan.
Konvertera en lista till en ordbok i sjunga blixtlås() Metod
Skapa först en iterator och initiera den till variabeln 'det'. Använd sedan blixtlås metod , för att zippa ihop nycklar och värden. Äntligen typcasta den till dikt typ.
Python3
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))> |
>
>Produktion
{'a': 1, 'b': 2, 'c': 3}> Tidskomplexitet: O(n), där n är längden på inmatningslistan a.
Extra utrymme: O(n), där n är längden på inmatningslistan a.
Lista till ordbokskonversation med Lambda-funktionen
Skapa först en array av nycklar och värden genom att använda array slicing. Använd sedan kartmetoden med lambda att bilda array av tupel med nyckelvärde paris. Äntligen typcasta den till dict-typ.
Pytonorm
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))> |
>
>Produktion
{'a': 1, 'c': 3, 'b': 2}> Tidskomplexitet: O(n), där n är antalet nyckel-värdepar i ordboken.
Extra utrymme: O(n), för att lagra nycklar och värden i ordboken.
Konvertera en lista till en ordbok med hjälp av Listförståelse och Slicing
Skiva inmatningslistan för att få en lista med nycklar genom att använda lst[::2]. Detta tar vartannat element med början från det första elementet i listan. Dela in inmatningslistan för att få en lista med värden genom att använda lst[1::2]. Detta tar vartannat element från det andra elementet i listan. Skapa en ordbok med hjälp av en ordboksförståelse som itererar över nyckellistans index och parar varje nyckel med dess motsvarande värde från värdelistan.
Returnera den resulterande ordboken.
Python3
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}> |
>
>Produktion
{'a': 1, 'b': 2, 'c': 3}> Tidskomplexitet: På)
Extra utrymme: På).
Konvertera en lista till ordbok med Itertools
Importera itertools modul .Använd zip_longest() funktion för att skapa en lista med tuplar från den ursprungliga listan. Den här funktionen kommer att gruppera elementen i par, även om längden på listan är udda. Använd en ordboksförståelse för att skapa en ordbok från listan över tupler. Returnera ordboken.
Nedan är implementeringen av ovanstående tillvägagångssätt:
Python3
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))> |
>
>Produktion
{'a': 1, 'b': 2, 'c': 3}> Tidskomplexitet: På)
Extra utrymme: O(n) (för att lagra listan över tupler)