logo

Pythona | Sposoby tworzenia słownika list

Do tej pory widzieliśmy sposoby tworzenia słownika na wiele sposobów i różnych operacji na kluczu i wartościach w Pythonie słownik . Przyjrzyjmy się teraz różnym sposobom tworzenia słownika list. Należy pamiętać, że ograniczenie dotyczące kluczy w pliku Pyton Jako kluczy można używać wyłącznie niezmiennych typów danych, co oznacza, że ​​nie możemy używać słownika list jako klucza.

Przykład :



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

Oświadczenie o problemie

Zwykle dostajemy typrerror, jeśli próbujemy go zaimplementować w normalny sposób.

Python3








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

przekonwertuj datę na ciąg
>

>

Wyjście:

TypeError: unhashable type: 'list'>

Ale to samo można zrobić bardzo mądrze z wartościami w słowniku. Przyjrzyjmy się różnym sposobom tworzenia słownika list.

Sposoby tworzenia słownika list

Poniżej znajdują się tematy, które omówimy w tym artykule:

Utwórz słownik list za pomocą indeksu dolnego

Ten kod inicjuje pusty słownik myDict>. Następnie dodaje do słownika dwie pary klucz-wartość:'key1'>z wartością[1, 2]>, I'key2'>z wartością['Geeks', 'For', 'Geeks']>. Na koniec kod wypisuje zawartość słownika.

Python3




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

>

>

Wyjście:

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

Złożoność czasowa: O(1) dla każdego wstawienia słownika i wydrukowania słownika.
Przestrzeń pomocnicza: O(n), gdzie n jest całkowitą liczbą elementów w słowniku.

Utwórz słownik list za pomocą metody append().

Dodawanie zagnieżdżonej listy jako wartości za pomocą metoda dołączania(). Utwórz nową listę, a my będziemy mogli po prostu dołączyć tę listę do wartości.

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

>

co to jest mapa Java
>

Wyjście:

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

Złożoność czasowa: O(1).
Złożoność przestrzeni pomocniczej: NA).

Utwórz słownik list, korzystając z metody setdefault().

Iteruj listę i dodawaj elementy aż do podanego zakresu, używając metoda setdefault().

Python3


środkowy przycisk w css



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

>

>

Wyjście:

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

Złożoność czasowa: O(n^2)
Złożoność przestrzeni: NA)

Tworzenie słownika list przy użyciu funkcji List Comprehension

W zrozumienie listy iterujemy po wartościach'1'>,'2'>, I'3'>i dla każdej wartości tworzy w słowniku parę klucz-wartość. Kluczem jest bieżąca wartość, a wartość jest zakresem liczb całkowitych zaczynającym się od wartości przekonwertowanej na liczbę całkowitą i kończącym się na wartości plus 1.

Pyton




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

>

>

Wyjście:

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

Złożoność czasowa: O(1).
Złożoność przestrzeni pomocniczej: NA).

Tworzenie słownika list przy użyciu defaultdict

Zaimportuj wyrok domyślny class z modułu kolekcji. Zdefiniuj listę krotek lst, przy czym każda krotka zawiera parę klucz-wartość. Utwórz obiekt defaultdict o nazwie orDict, który będzie miał domyślne wartości pustej listy. Wykonaj iterację po liście krotek, używając pętli for i rozpakuj każdą krotkę do zmiennych key i val. Dołącz wartość val do listy powiązanej z kluczem w słowniku orDict.

Wydrukuj wynikowy słownik lub Dict.

Notatka : To samo można zrobić za pomocą prostego słownika, ale w takich przypadkach użycie defaultdict jest bardziej efektywne.

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

>

>

Wyjście:

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

Złożoność czasowa: O(n).
Przestrzeń pomocnicza: O(n).

Zauważ, że w słowniku wyjściowym znajdują się tylko dwie pary klucz:wartość, ale lista wejściowa zawiera trzy krotki. Pierwszy element (tj. klucz) jest taki sam dla pierwszej i trzeciej krotki, a dwa klucze nigdy nie mogą być takie same.

Tworzenie słownika list przy użyciu Jsona

Importując plikjson>moduł. Inicjuje listęlst>zawierające krotki. Potem pusty słownikdict>jest inicjowany. Kod konwertuje listęlst>na ciąg w formacie JSON za pomocąjson.dumps()> i przypisuje ten ciąg jako klucz w słownikudict>z przeliczoną wartością. Na koniec słownik jest drukowany.

Python3


jak zdobyć gołębia łownego na Androida



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

>

>

Wyjście:

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

Złożoność czasowa: O(n), gdzie n jest długością listy lst.
Przestrzeń pomocnicza: O(n), gdzie n jest długością listy lst.

Ciąg wielowierszowy JavaScript

Tworzenie słownika list przy użyciu itertools

Jednym z podejść jest użycie funkcji zip_longest z pliku moduł itertools. Ta funkcja umożliwia równoległą iterację po dwóch lub większej liczbie iteracji, wypełniając brakujące elementy określoną wartością wypełnienia.

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

>

>

Wyjście

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

Złożoność czasowa: O(n), gdzie n jest długością najdłuższej listy.
Przestrzeń pomocnicza: NA)