Utiliser un dict clé de liste en Python

En Python, le type de liste ne peut pas être une clé de dictionnaire.

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

La raison est que le type de liste peut changer son état. Par exemple

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

Ce serait un problème si vous pouviez faire quelque chose comme ça. Mais je veux utiliser le tableau comme clé! Dans un tel cas, utilisez tuple.

Bibliothèque

Il existe des bibliothèques numpy et sympy qui gèrent leurs propres tableaux. Quel est le traitement dans ces derniers? Le fait qu'un objet puisse ou non être utilisé comme clé dépend de l'existence ou non d'une fonction `` hash```, alors jetons un coup d'œil.

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

Donc, c'était inutile même s'il n'était pas inscriptible avec numpy. Eh bien, c'est naturel car il peut être retourné. .. (Au fait, il semble que vous puissiez copier avec as_immutable de sympy etc. Même si vous apportez des modifications à l'original, le résultat ne changera pas.)

Recommended Posts

Utiliser un dict clé de liste en Python
Utilisez config.ini avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utiliser le profileur en Python
Voyons comment utiliser def en python
Utiliser l'expression let en Python
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le magasin de paramètres en Python
Utiliser le cache HTTP en Python
Utilisez l'ODM de MongoDB avec Python
Utiliser Random Forest avec Python
Utilisez Spyder de Python IDE
Utilisez le tissu tel quel en python (fabric3)
Comment utiliser SQLite en Python
Utiliser rospy avec virtualenv dans Python3
Comment utiliser Mysql avec python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Utiliser OpenCV avec Python 3 dans Window
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
[Introduction à Python] Comment utiliser la classe en Python?
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Utiliser l'impression dans l'expression lambda Python2
Méta-analyse en Python
Unittest en Python
Utilisez facilement vos propres fonctions en Python
Époque en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Un moyen simple d'utiliser Wikipedia avec Python
Zone Python Dict
Plink en Python
Constante en Python
N'utilisez pas \ d dans les expressions régulières Python 3!
FizzBuzz en Python
Comment utiliser __slots__ dans la classe Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
nCr en Python.
format en python