Schrijf, gegeven een lijst, een Python-programma om de gegeven lijst naar een woordenboek te converteren, zodat alle oneven elementen de sleutel hebben, en even getalselementen de waarde. Sinds de Python woordenboek is ongeordend, de uitvoer kan in elke volgorde staan.
Voorbeeld
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> Converteer een lijst naar woordenboekpython
Hieronder staan de methoden die we in dit artikel zullen behandelen:
- Gebruik maken van een lus
- Gebruik makend van dict Begrip
- Gebruik makend van zip() Methode
- Gebruik makend van Lambda-functie
- Gebruik makend van Lijstbegrip En Snijden
- Gebruik makend van Itertools
Converteer een lijst naar een woordenboek met behulp van een lus
Deze methode werkt door het initialiseren van een leeg bestand woordenboek en vervolgens de lijst doorlopen in stap 2. Bij elke iteratie wordt het sleutel-waardepaar aan het woordenboek toegevoegd, waarbij het huidige element als sleutel en het volgende element als waarde wordt gebruikt. Ten slotte wordt het woordenboek als resultaat geretourneerd.
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))> |
>
>
Uitvoer
{'a': 1, 'b': 2, 'c': 3}> Tijdcomplexiteit: O(n), waarbij n de lengte van de invoerlijst is.
Hulpruimte: O(n), waarbij n de lengte van de invoerlijst is.
Lijst met woordenboekgesprekken met behulp van dictbegrip
Om een lijst naar een woordenboek te converteren, kunnen we gebruiken dicteerbegrip en maak een sleutel:waardepaar van opeenvolgende elementen. Typ ten slotte de lijst naar dictaat type.
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))> |
>
>Uitvoer
{'a': 1, 'b': 2, 'c': 3}> Tijdcomplexiteit: O(n), waarbij n de lengte van de invoerlijst is.
Hulpruimte: O(n), waarbij n de lengte van de invoerlijst is.
Een lijst omzetten in een woordenboek in zingen zip() Methode
Maak eerst een iterator en initialiseer deze met de variabele ‘it’. Gebruik dan ritssluiting methode , om sleutels en waarden samen te zippen. Eindelijk typecast het naar dictaat type.
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))> |
>
>Uitvoer
{'a': 1, 'b': 2, 'c': 3}> Tijdcomplexiteit: O(n), waarbij n de lengte is van de invoerlijst a.
Hulpruimte: O(n), waarbij n de lengte is van de invoerlijst a.
Lijst met woordenboekgesprekken met behulp van de Lambda-functie
Maak eerst een array met sleutels en waarden met behulp van array-slicing. Gebruik dan de kaart methode met lambda om een array van tuple te vormen met de sleutelwaarde paris. Tenslotte typeert u het naar dicteertype.
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))> |
>
>Uitvoer
{'a': 1, 'c': 3, 'b': 2}> Tijdcomplexiteit: O(n), waarbij n het aantal sleutelwaardeparen in het woordenboek is.
Hulpruimte: O(n), om de sleutels en waarden in het woordenboek op te slaan.
Een lijst omzetten in een woordenboek met behulp van Lijstbegrip en Segmentatie
Plak de invoerlijst om een lijst met sleutels te verkrijgen met behulp van lst[::2]. Hiervoor is elk tweede element nodig, beginnend bij het eerste element van de lijst. Snijd de invoerlijst in stukken om een lijst met waarden te krijgen met behulp van lst[1::2]. Hierbij is elk tweede element nodig, beginnend bij het tweede element van de lijst. Maak een woordenboek met behulp van a woordenboekbegrip dat itereert over de indices van de sleutellijst en koppelt elke sleutel aan de overeenkomstige waarde uit de waardenlijst.
Retourneer het resulterende woordenboek.
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}> |
>
java-arraylijst gesorteerd
>Uitvoer
{'a': 1, 'b': 2, 'c': 3}> Tijdcomplexiteit: Op)
Hulpruimte: Op).
Converteer een lijst naar een woordenboek met Itertools
Importeer de itertools module .Gebruik de zip_longest() functie om een lijst met tupels te maken uit de originele lijst. Deze functie groepeert de elementen in paren, zelfs als de lengte van de lijst oneven is. Gebruik een woordenboekbegrip om een woordenboek te maken uit de lijst met tupels. Retourneer het woordenboek.
Hieronder vindt u de implementatie van de bovenstaande aanpak:
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))> |
>
>Uitvoer
{'a': 1, 'b': 2, 'c': 3}> Tijdcomplexiteit: Op)
Hulpruimte: O(n) (om de lijst met tupels op te slaan)