logo

Python | Möglichkeiten zum Erstellen eines Wörterbuchs mit Listen

Bisher haben wir gesehen, wie man ein Wörterbuch auf verschiedene Weise und mit unterschiedlichen Operationen an Schlüsseln und Werten in Python erstellen kann Wörterbuch . Sehen wir uns nun verschiedene Möglichkeiten zum Erstellen eines Wörterbuchs mit Listen an. Beachten Sie, dass die Einschränkung mit Schlüsseln in der Python Im Wörterbuch können nur unveränderliche Datentypen als Schlüssel verwendet werden, was bedeutet, dass wir kein Wörterbuch mit Listen als Schlüssel verwenden können.

Beispiel :



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

Problemstellung

Im Allgemeinen erhalten wir den Typfehler, wenn wir versuchen, ihn auf normale Weise zu implementieren.

Python3








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

>

>

Ausgabe:

TypeError: unhashable type: 'list'>

Aber das Gleiche lässt sich sehr sinnvoll auch mit Werten in einem Wörterbuch machen. Sehen wir uns die verschiedenen Möglichkeiten an, wie wir ein Wörterbuch mit Listen erstellen können.

Möglichkeiten zum Erstellen eines Wörterbuchs mit Listen

Nachfolgend sind die Themen aufgeführt, die wir in diesem Artikel behandeln werden:

Erstellen Sie ein Wörterbuch mit Listen mit Index

Dieser Code initialisiert eine leere Wörterbuch myDict>. Anschließend werden dem Wörterbuch zwei Schlüssel-Wert-Paare hinzugefügt:'key1'>mit dem Wert[1, 2]>, Und'key2'>mit dem Wert['Geeks', 'For', 'Geeks']>. Schließlich gibt der Code den Inhalt des Wörterbuchs aus.

Python3




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

>

>

Ausgabe:

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

Zeitkomplexität: O(1) für jedes Wörterbuch, das eingefügt und das Wörterbuch gedruckt wird.
Nebenraum: O(n), wobei n die Gesamtzahl der Elemente im Wörterbuch ist.

Erstellen Sie mit der Methode append() ein Wörterbuch mit Listen

Hinzufügen einer verschachtelten Liste als Wert mithilfe von append()-Methode. Erstellen Sie eine neue Liste und wir können diese Liste einfach an den Wert anhängen.

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

>

>

Ausgabe:

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

Zeitkomplexität: O(1).
Komplexität des Hilfsraums: An).

Erstellen Sie mit der Methode setdefault() ein Wörterbuch mit Listen

Durchlaufen Sie die Liste und hängen Sie die Elemente bis zum angegebenen Bereich mit an setdefault()-Methode.

Python3




Java versuche es zu fangen

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

>

>

Ausgabe:

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

Zeitkomplexität: O(n^2)
Raumkomplexität: An)

Erstellen eines Wörterbuchs mit Listen mithilfe des Listenverständnisses

In Listenverständnis Wir iterieren über die Werte'1'>,'2'>, Und'3'>und für jeden Wert wird ein Schlüssel-Wert-Paar im Wörterbuch erstellt. Der Schlüssel ist der aktuelle Wert, und der Wert ist ein Bereich von Ganzzahlen, beginnend mit dem in eine Ganzzahl umgewandelten Wert und endend beim Wert 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)>

Java-Punkt

>

>

Ausgabe:

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

Zeitkomplexität: O(1).
Komplexität des Hilfsraums: An).

Erstellen eines Listenwörterbuchs mit defaultdict

Importieren Sie die defaultdict Klasse aus dem Sammlungsmodul. Definieren Sie eine Liste von Tupeln, wobei jedes Tupel ein Schlüssel-Wert-Paar enthält. Erstellen Sie ein defaultdict-Objekt namens orDict, das Standardwerte einer leeren Liste enthält. Durchlaufen Sie die Liste der Tupel lst mithilfe einer for-Schleife und entpacken Sie jedes Tupel in die Variablen key und val. Hängen Sie den Wert val an die Liste an, die dem Schlüssel im orDict-Wörterbuch zugeordnet ist.

Drucken Sie das resultierende Dict-Wörterbuch aus.

Notiz : Das Gleiche kann auch mit einem einfachen Wörterbuch gemacht werden, aber die Verwendung von defaultdict ist in solchen Fällen effizienter.

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

>

>

Ausgabe:

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

Zeitkomplexität: O(n).
Hilfsraum: O(n).

Beachten Sie, dass das Ausgabewörterbuch nur zwei Schlüssel-Wert-Paare enthält, die Eingabeliste jedoch drei Tupel enthält. Das erste Element (d. h. der Schlüssel) ist für das erste und dritte Tupel gleich und zwei Schlüssel können niemals gleich sein.

Erstellen eines Listenwörterbuchs mit Json

Durch den Import derjson>Modul. Es initialisiert eine Listelst>enthält Tupel. Dann ein leeres Wörterbuchdict>wird initialisiert. Der Code konvertiert die Listelst>in eine JSON-formatierte Zeichenfolge verwendenjson.dumps()> und weist diese Zeichenfolge als Schlüssel im Wörterbuch zudict>mit umgerechnetem Wert. Abschließend wird das Wörterbuch gedruckt.

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

>

>

Ausgabe:

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

Zeitkomplexität: O(n), wobei n die Länge der Listenliste ist.
Nebenraum: O(n), wobei n die Länge der Listenliste ist.

Erstellen eines Listenwörterbuchs mit itertools

Ein Ansatz besteht darin, die Funktion zip_longest aus dem zu verwenden itertools-Modul. Mit dieser Funktion können Sie zwei oder mehr Iterables parallel durchlaufen und alle fehlenden Elemente mit einem angegebenen Füllwert ergänzen.

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

>

>

Ausgabe

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

Zeitkomplexität: O(n), wobei n die Länge der längsten Liste ist.
Nebenraum: An)