logo

Python | Veidi, kā izveidot sarakstu vārdnīcu

Līdz šim mēs esam redzējuši veidus, kā izveidot vārdnīcu vairākos veidos un dažādas darbības ar atslēgu un vērtībām Python. vārdnīca . Tagad apskatīsim dažādus veidus, kā izveidot sarakstu vārdnīcu. Ņemiet vērā, ka ierobežojums ar taustiņiem Python vārdnīca ir tikai nemainīgs datu tipus var izmantot kā atslēgas, kas nozīmē, ka mēs nevaram izmantot sarakstu vārdnīcu kā atslēgu.

Piemērs :



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

Problēmas paziņojums

Mēs parasti saņēmām tiprerror, ja mēģinām to ieviest parastajā veidā.

Python3








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

priekšpasūtīšanas šķērsošana
>

>

Izvade:

TypeError: unhashable type: 'list'>

Bet to pašu var ļoti gudri izdarīt ar vērtībām vārdnīcā. Apskatīsim visus dažādos veidus, kā mēs varam izveidot sarakstu vārdnīcu.

Veidi, kā izveidot sarakstu vārdnīcu

Tālāk ir norādītas tēmas, kuras mēs apskatīsim šajā rakstā:

Izveidojiet sarakstu vārdnīcu, izmantojot apakšindeksu

Šis kods inicializē tukšu vārdnīca myDict>. Pēc tam vārdnīcai tiek pievienoti divi atslēgu vērtību pāri:'key1'>ar vērtību[1, 2]>, un'key2'>ar vērtību['Geeks', 'For', 'Geeks']>. Visbeidzot, kods izdrukā vārdnīcas saturu.

Python3




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

>

>

Izvade:

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

Laika sarežģītība: O(1) katrai vārdnīcas ievietošanai un vārdnīcas drukāšanai.
Palīgtelpa: O(n), kur n ir kopējais elementu skaits vārdnīcā.

Izveidojiet sarakstu vārdnīcu, izmantojot append() metodi

Pievienojot ligzdotu sarakstu kā vērtību, izmantojot append() metode. Izveidojiet jaunu sarakstu, un mēs varam vienkārši pievienot šo sarakstu vērtībai.

Python3

centrējot attēlus css




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

>

>

Izvade:

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

Laika sarežģītība: O(1).
Papildtelpas sarežģītība: O(n).

Izveidojiet sarakstu vārdnīcu, izmantojot setdefault() metodi

Atkārtojiet sarakstu un turpiniet pievienot elementus līdz norādītajam diapazonam, izmantojot setdefault() metode.

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

>

>

Izvade:

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

Laika sarežģītība: O(n^2)
Telpas sarežģītība: O(n)

Sarakstu vārdnīcas izveide, izmantojot sarakstu izpratni

In saraksta izpratne mēs atkārtojam vērtības'1'>,'2'>, un'3'>, un katrai vērtībai tas vārdnīcā izveido atslēgas-vērtības pāri. Galvenais ir pašreizējā vērtība, un vērtība ir veselu skaitļu diapazons, sākot no vērtības, kas pārveidota par veselu skaitli, un beidzot ar vērtību plus 1.

Python


kā es varu uzzināt sava monitora izmēru



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

>

>

Izvade:

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

Laika sarežģītība: O(1).
Papildtelpas sarežģītība: O(n).

Sarakstu vārdnīcas izveide, izmantojot noklusējuma diktātu

Importēt noklusējuma diktāts klase no kolekciju moduļa. Definējiet korešu sarakstu lst ar katru korešu, kurā ir atslēgas-vērtības pāris. Izveidojiet noklusējuma dikta objektu ar nosaukumu orDict, kuram būs tukša saraksta noklusējuma vērtības. Atkārtojiet korešu sarakstu lst, izmantojot for cilpu, un izpakojiet katru korešu atslēgas un val mainīgajos. Pievienojiet vērtību val sarakstam, kas saistīts ar atslēgu orDict vārdnīcā.

Izdrukājiet iegūto vai diktātu vārdnīcu.

Piezīme : To pašu var izdarīt arī ar vienkāršu vārdnīcu, taču šādos gadījumos ir efektīvāk izmantot defaultdict.

Python3




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

>

>

Izvade:

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

Laika sarežģītība: O(n).
Palīgtelpa: O(n).

Ņemiet vērā, ka izvades vārdnīcā ir tikai divi atslēgu: vērtību pāri, bet ievades sarakstā ir trīs korteži. Pirmais elements (t.i., atslēga) ir vienāds pirmajam un trešajam kortežam, un divi taustiņi nekad nevar būt vienādi.

Sarakstu vārdnīcas izveide, izmantojot Json

Importējotjson>modulis. Tas inicializē sarakstulst>satur korteces. Tad tukša vārdnīcadict>ir inicializēts. Kods pārvērš sarakstulst>JSON formatētā virknē izmantojotjson.dumps()> , un piešķir šo virkni kā atslēgu vārdnīcādict>ar konvertētu vērtību. Visbeidzot vārdnīca tiek izdrukāta.

Python3




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

viņi ir dziedātāji
>

>

Izvade:

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

Laika sarežģītība: O(n), kur n ir saraksta garums lst.
Palīgtelpa: O(n), kur n ir saraksta garums lst.

Sarakstu vārdnīcas izveide, izmantojot itertorīki

Viena pieeja ir izmantot funkciju zip_longest no itertools modulis. Šī funkcija ļauj paralēli atkārtot divus vai vairākus atkārtojumus, aizpildot visus trūkstošos elementus ar noteiktu aizpildījuma vērtību.

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']}>

>

>

Izvade

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

Laika sarežģītība: O(n), kur n ir garākā saraksta garums.
Palīgtelpa: O(n)