Verwenden Sie in Python ein Diktat mit Listenschlüssel

In Python kann der Listentyp kein Wörterbuchschlüssel sein.

key = [1, 2, 3]
table = {key: 1}  #Error

Der Grund ist, dass der Listentyp seinen Status ändern kann. Zum Beispiel

key1 = [1]
key2 = [2]
table = {key1: 1, key2: 2}
key1[0] = 2

Es wäre ein Problem, wenn Sie so etwas tun könnten. Aber ich möchte das Array als Schlüssel verwenden! Verwenden Sie in diesem Fall Tupel.

Bibliothek

Es gibt Numpy und Sympy als Bibliotheken, die ihre eigenen Arrays verarbeiten. Was ist die Behandlung in diesen? Ob ein Objekt als Schlüssel verwendet werden kann oder nicht, hängt davon ab, ob es eine `` `hash``` -Funktion gibt oder nicht. Schauen wir uns das an.

from sympy import Matrix, ImmutableMatrix
import numpy as np

# sympy
Matrix([1, 2]).__hash__  # None
ImmutableMatrix([1, 2]).__hash__  # not None

# numpy
a = np.array([1, 2])
a.__hash__  # None
a.flags.writeable = False
a.__hash__  # None

Es war also nutzlos, auch wenn es nicht mit Numpy beschreibbar war. Nun, es ist natürlich, weil es zurückgegeben werden kann. .. (Übrigens scheint es, dass Sie mit as_immutable von sympy usw. kopieren können. Selbst wenn Sie Änderungen am Original vornehmen, ändert sich das Ergebnis nicht.)

Recommended Posts

Verwenden Sie in Python ein Diktat mit Listenschlüssel
Verwenden Sie config.ini mit Python
Verwenden Sie Datumsangaben in Python
Verwenden Sie Valgrind mit Python
Verwenden Sie den Profiler in Python
Mal sehen, wie def in Python verwendet wird
Verwenden Sie den let-Ausdruck in Python
Verwenden Sie das Messprotokoll mit Python
Verwenden Sie die Rückruffunktion in Python
Verwenden Sie den Parameterspeicher in Python
Verwenden Sie den HTTP-Cache in Python
Verwenden Sie Random Forest mit Python
Verwenden Sie Spyder von Python IDE
Verwenden Sie Stoff wie in Python (Stoff3)
Verwendung von SQLite in Python
Verwenden Sie rospy mit virtualenv in Python3
Wie man MySQL mit Python benutzt
Verwenden Sie Python in pyenv mit NeoVim
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Verwenden Sie OpenCV mit Python 3 in Window
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Verwenden Sie print in Python2 lambda expression
Metaanalyse in Python
Unittest in Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Epoche in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Python Dict-Bereich
Plink in Python
Konstante in Python
Verwenden Sie \ d nicht in regulären Python 3-Ausdrücken!
FizzBuzz in Python
Verwendung von __slots__ in der Python-Klasse
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
Verwenden Sie pathlib in Maya (Python2.7), um sich auf das kommende Python3.7 vorzubereiten
nCr in Python.
Format in Python