logo

Python | Načini ustvarjanja slovarja seznamov

Do zdaj smo videli načine za ustvarjanje slovarja na več načinov in različne operacije na ključu in vrednostih v Pythonu slovar . Zdaj pa si poglejmo različne načine ustvarjanja slovarja seznamov. Upoštevajte, da je omejitev s tipkami v Python slovar je kot ključe mogoče uporabiti le nespremenljive tipe podatkov, kar pomeni, da slovarja seznamov ne moremo uporabiti kot ključ.

Primer :



  Input:   myDict = {}  myDict['key1'] = [1, 2] # Adding list as value  myDict['key2'] = ['Geeks', 'For', 'Geeks']    Output:   {'key2': ['Geeks', 'For', 'Geeks'], 'key1': [1, 2]}    Explanation:   In the output, we have a dictionary of lists.>

Izjava o težavi

Na splošno dobimo tippralno napako, če jo poskušamo implementirati na običajen način.

Python3




zemljevid java





# Creating a dictionary> myDict>=> {[>1>,>2>]:>'Geeks'>}> print>(myDict)>

>

>

Izhod:

TypeError: unhashable type: 'list'>

Toda enako je mogoče storiti zelo modro z vrednostmi v slovarju. Oglejmo si vse različne načine, kako lahko ustvarimo slovar seznamov.

Načini ustvarjanja slovarja seznamov

Spodaj so teme, ki jih bomo obravnavali v tem članku:

Ustvarite slovar seznamov z indeksom

Ta koda inicializira prazno slovar myDict>. Nato v slovar doda dva para ključ-vrednost:'key1'>z vrednostjo[1, 2]>, in'key2'>z vrednostjo['Geeks', 'For', 'Geeks']>. Končno koda natisne vsebino slovarja.

Python3




# Creating an empty dictionary> myDict>=> {}> # Adding list as value> myDict[>'key1'>]>=> [>1>,>2>]> myDict[>'key2'>]>=> [>'Geeks'>,>'For'>,>'Geeks'>]> print>(myDict)>

>

>

Izhod:

{'key2': ['Geeks', 'For', 'Geeks'], 'key1': [1, 2]}>

Časovna zahtevnost: O(1) za vsako vstavljanje slovarja in tiskanje slovarja.
Pomožni prostor: O(n), kjer je n skupno število elementov v slovarju.

Ustvarite slovar seznamov z uporabo metode append().

Dodajanje ugnezdenega seznama kot vrednosti z uporabo metoda append(). Ustvarite nov seznam in ta seznam lahko preprosto dodamo vrednosti.

Python3




# Creating an empty dictionary> myDict>=> {}> # Adding list as value> myDict[>'key1'>]>=> [>1>,>2>]> # creating a list> lst>=> [>'Geeks'>,>'For'>,>'Geeks'>]> # Adding this list as sublist in myDict> myDict[>'key1'>].append(lst)> print>(myDict)>

>

>

Izhod:

{'key1': [1, 2, ['Geeks', 'For', 'Geeks']]}>

Časovna zahtevnost: O(1).
Kompleksnost pomožnega prostora: O(n).

Ustvarite slovar seznamov z uporabo metode setdefault().

Ponovite seznam in nadaljujte z dodajanjem elementov do danega obsega z uporabo metoda setdefault().

dedovanje java

Python3




# Creating an empty dict> myDict>=> dict>()> # Creating a list> valList>=> [>'1'>,>'2'>,>'3'>]> # Iterating the elements in list> for> val>in> valList:> >for> ele>in> range>(>int>(val),>int>(val)>+> 2>):> >myDict.setdefault(ele, []).append(val)> print>(myDict)>

>

>

Izhod:

{1: ['1'], 2: ['1', '2'], 3: ['2', '3'], 4: ['3']}>

Časovna zahtevnost: O(n^2)
Kompleksnost prostora: O(n)

Ustvarjanje slovarja seznamov z uporabo funkcije List Comprehension

noter razumevanje seznama ponavljamo vrednosti'1'>,'2'>, in'3'>in za vsako vrednost ustvari par ključ-vrednost v slovarju. Ključ je trenutna vrednost, vrednost pa obseg celih števil, ki se začne od vrednosti, pretvorjene v celo število, in konča pri vrednosti plus 1.

Python




# Creating a dictionary of lists using list comprehension> d>=> dict>((val,>range>(>int>(val),>int>(val)>+> 2>))> >for> val>in> [>'1'>,>'2'>,>'3'>])> print>(d)>

>

>

Izhod:

{'1': [1, 2], '3': [3, 4], '2': [2, 3]}>

Časovna zahtevnost: O(1).
Kompleksnost pomožnega prostora: O(n).

Ustvarjanje slovarja seznamov z uporabo defaultdict

Uvozite defaultdict razreda iz modula zbirk. Definirajte seznam tulp lst, pri čemer vsaka tuple vsebuje par ključ-vrednost. Ustvarite objekt defaultdict z imenom orDict, ki bo imel privzete vrednosti praznega seznama. Ponavljajte po seznamu tork, najprej uporabite zanko for in razpakirajte vsako torko v spremenljivki ključ in val. Dodajte vrednost val na seznam, povezan s ključem v slovarju orDict.

Natisnite dobljeni ali Dict slovar.

Opomba : Enako je mogoče storiti tudi s preprostim slovarjem, vendar je za take primere učinkovitejša uporaba defaultdict.

Python3




strani java strežnika
from> collections>import> defaultdict> lst>=> [(>'Geeks'>,>1>), (>'For'>,>2>), (>'Geeks'>,>3>)]> orDict>=> defaultdict(>list>)> # iterating over list of tuples> for> key, val>in> lst:> >orDict[key].append(val)> print>(orDict)>

>

>

Izhod:

defaultdict(, {'For': [2], 'Geeks': [1, 3]})>

Časovna zahtevnost: O(n).
Pomožni prostor: O(n).

Upoštevajte, da sta v izhodnem slovarju samo dva para ključ: vrednost, vhodni seznam pa vsebuje tri tuple. Prvi element (tj. ključ) je enak za prvo in tretjo torko in dva ključa nikoli ne moreta biti enaka.

Ustvarjanje slovarja seznamov z uporabo Json

Z uvozomjson>modul. Inicializira seznamlst>ki vsebuje tuple. Potem pa prazen slovardict>je inicializiran. Koda pretvori seznamlst>v niz v formatu JSON uporabojson.dumps()> in ta niz dodeli kot ključ v slovarjudict>s pretvorjeno vrednostjo. Nazadnje je slovar natisnjen.

Python3


css oblivanje besedila



#importing json> import> json> #Initialisation of list> lst>=> [(>'Geeks'>,>1>), (>'For'>,>2>), (>'Geeks'>,>3>)]> #Initialisation of dictionary> dict> => {}> #using json.dump()> hash> => json.dumps(lst)> #creating a hash> dict>[>hash>]>=> 'converted'> #Printing dictionary> print>(>dict>)>

>

>

Izhod:

{'[['Geeks', 1], ['For', 2], ['Geeks', 3]]': 'converted'}>

Časovna zahtevnost: O(n), kjer je n dolžina seznama lst.
Pomožni prostor: O(n), kjer je n dolžina seznama lst.

Ustvarjanje slovarja seznamov z uporabo itertools

Eden od pristopov je uporaba funkcije zip_longest iz modul itertools. Ta funkcija vam omogoča vzporedno ponavljanje dveh ali več ponovljivih elementov in zapolnjevanje vseh manjkajočih elementov z določeno vrednostjo polnila.

Python3




from> itertools>import> zip_longest> # Initialize the lists> list1>=> [>1>,>2>,>3>]> list2>=> [>10>,>20>,>30>,>40>]> list3>=> [>'a'>,>'b'>,>'c'>,>'d'>,>'e'>]> # Use zip_longest to iterate over the lists in parallel> d>=> {}> for> elem1, elem2, elem3>in> zip_longest(list1, list2, list3, fillvalue>=>0>):> >d.setdefault(elem1, []).append(elem2)> >d.setdefault(elem1, []).append(elem3)> print>(d)> # Output: {1: [10, 'a'], 2: [20, 'b'], 3: [30, 'c'], 0: [40, 'd']}>

>

>

Izhod

{1: [10, 'a'], 2: [20, 'b'], 3: [30, 'c'], 0: [40, 'd', 0, 'e']}>

Časovna zahtevnost: O(n), kjer je n dolžina najdaljšega seznama.
Pomožni prostor: O(n)