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:
- Benutzen Index
- Verwendung der append()-Methode
- Verwendung der setdefault()-Methode
- Benutzen Listenverständnis
- Benutzen defaultdict
- Benutzen Json.dumb() Methode
- Benutzen itertools-Modul
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)