Wann sollte ich ein Wörterbuch, eine Liste oder ein Set verwenden?
Gibt es Szenarien, die für jeden Datentyp besser geeignet sind?
Wann sollte ich ein Wörterbuch, eine Liste oder ein Set verwenden?
Gibt es Szenarien, die für jeden Datentyp besser geeignet sind?
Für C++ hatte ich immer dieses Flussdiagramm im Kopf: In welchem Szenario sollte ich einen bestimmten STL-Container verwenden? Deshalb war ich neugierig, ob es etwas Ähnliches auch für Python3 gibt, aber ich hatte kein Glück.
Was Sie bei Python beachten müssen, ist: Es gibt keinen einheitlichen Python-Standard wie bei C++. Daher kann es bei verschiedenen Python-Interpretern (z. B. CPython, PyPy) große Unterschiede geben. Das folgende Flussdiagramm bezieht sich auf CPython.
Außerdem habe ich keine gute Möglichkeit gefunden, die folgenden Datenstrukturen in das Diagramm einzubinden: bytes
, byte arrays
, tuples
, named_tuples
, ChainMap
, Counter
y arrays
.
OrderedDict
et deque
sind erhältlich über collections
Modul.heapq
ist erhältlich bei der heapq
ModulLifoQueue
, Queue
y PriorityQueue
sind verfügbar über die queue
Modul, das für den gleichzeitigen Zugriff (Threads) ausgelegt ist. (Es gibt auch ein multiprocessing.Queue
verfügbar, aber ich kenne nicht die Unterschiede zu queue.Queue
würde aber davon ausgehen, dass es verwendet werden sollte, wenn ein gleichzeitiger Zugriff von Prozessen erforderlich ist).dict
, set
, frozen_set
y list
sind natürlich eingebautIch wäre jedem dankbar, wenn Sie diese Antwort verbessern und ein in jeder Hinsicht besseres Diagramm erstellen könnten. Fühlen Sie sich frei und willkommen.
PS: Das Diagramm wurde mit yed erstellt. Die graphml-Datei ist hier
Obwohl dies nicht die set
s, ist es eine gute Erklärung für dict
s und list
s:
Listen sind das, was sie zu sein scheinen - eine Liste von Werten. Jeder dieser Werte ist nummeriert, beginnend mit Null - der erste Wert hat die Nummer Null, der zweite 1, die dritte 2, usw. Sie können Werte aus der Liste entfernen, und neue Werte an das Ende anfügen. Beispiel: Die Namen Ihrer vielen Katzen.
Wörterbücher sind vergleichbar mit dem, was die In einem Wörterbuch gibt es einen "Index" von Wörtern und für jedes Wort eine Definition. In Python wird das Wort als "Schlüssel" bezeichnet und die Definition ein "Wert". Die Werte in einem Wörterbuch sind nicht nummeriert - ähnlich wie wie ihr Name schon sagt - ein Wörterbuch. [ ] einen "Index" von Wörtern und für jedes dieser Wörter eine Definition. Die Werte in einem Wörterbuch sind nicht nummeriert - sie sind nicht in einer bestimmten Reihenfolge, auch nicht in einer bestimmten Reihenfolge - der Schlüssel hat dieselbe Funktion. Sie können hinzufügen, entfernen und ändern die Werte in Wörterbüchern. Beispiel: Telefonbuch.
In Kombination mit Listen , Diagramme et setzt gibt es auch andere interessante Pythonobjekte, OrderedDicts .
Geordnete Wörterbücher sind genau wie normale Wörterbücher, aber sie merken sich die Reihenfolge, in der die Einträge eingefügt wurden. Bei der Iteration über ein geordnetes Wörterbuch werden die Elemente in der Reihenfolge zurückgegeben, in der ihre Schlüssel zuerst hinzugefügt wurden.
OrderedDicts könnte nützlich sein, wenn Sie die Reihenfolge der Schlüssel beibehalten müssen, z. B. bei der Arbeit mit Dokumenten: Es ist üblich, dass man die Vektordarstellung aller Begriffe in einem Dokument benötigt. Daher ist die Verwendung von OrderedDicts können Sie effizient überprüfen, ob ein Begriff schon einmal gelesen wurde, Begriffe hinzufügen, Begriffe extrahieren und nach all diesen Manipulationen die geordnete Vektordarstellung der Begriffe extrahieren.
Das mag im Hinblick auf die Frage des Auftraggebers vom Thema abweichen.
Um sie auf einen Blick zu vergleichen, sehen Sie sich das Bild an.
Verzeichnisse sind das, was sie zu sein scheinen - eine Liste von Werten. Jeder von ihnen ist nummeriert, beginnend mit Null - der erste ist mit Null nummeriert, der zweite mit 1, der dritte mit 2, usw. Sie können Werte aus der Liste entfernen und neue Werte am Ende der Liste hinzufügen. Beispiel: Die Namen Ihrer vielen Katzen.
Tupel sind genau wie Listen, aber man kann ihre Werte nicht ändern. Die Werte, die Sie ihm zu Beginn geben, sind die Werte, die Sie für den Rest des Programms beibehalten werden. Auch hier ist jeder Wert von Null an nummeriert, damit Sie ihn leicht wiederfinden. Beispiel: die Namen der Monate des Jahres.
Wörterbücher sind dem ähnlich, was ihr Name vermuten lässt - ein Wörterbuch. In einem Wörterbuch haben Sie einen "Index" von Wörtern und für jedes von ihnen eine Definition. In Python wird das Wort als "Schlüssel" und die Definition als "Wert" bezeichnet. Die Werte in einem Wörterbuch sind nicht nummeriert - ähnlich wie der Name schon sagt - ein Wörterbuch. In einem Wörterbuch gibt es einen "Index" von Wörtern und für jedes dieser Wörter eine Definition. In Python wird das Wort als "Schlüssel" und die Definition als "Wert" bezeichnet. Die Werte in einem Wörterbuch sind nicht nummeriert - sie sind auch nicht in einer bestimmten Reihenfolge - der Schlüssel hat die gleiche Funktion. Sie können die Werte in Wörterbüchern hinzufügen, entfernen und ändern. Beispiel: Telefonbuch.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.