HOWTO · Python
TypeError behoben: 'map'-Objekt ist in Python nicht abonnierbar
Dieses Tutorial zeigt die Ursache von TypeError: map object is not subscriptable und die Lösungen zur Behebung dieses Fehlers in Python.
Auf dieser Seite
Jede Programmiersprache trifft auf viele Fehler. Einige treten zur Kompilierzeit auf, andere zur Laufzeit.
Dieser Artikel behandelt TypeError: 'map' object is not subscriptable, eine Unterklasse von TypeError. Wir stoßen auf einen TypeError, wenn wir versuchen, eine Operation auszuführen, die mit dem Objekttyp nicht kompatibel ist.
Ursache des Fehlers TypeError: 'map' object is not subscriptable in Python
Python 2-Kartenoperationen in Python 3
In Python 2 gibt die Methode map() eine Liste zurück. Wir können auf die Elemente der Liste zugreifen, indem wir ihren Index über den Indexoperator [] verwenden.
In Python 3 gibt die Methode map() ein Objekt zurück, das ein Iterator ist und nicht indiziert werden kann. Wenn wir versuchen, mit dem Indexoperator [] auf das Element zuzugreifen, wird der TypeError: 'map' object is not subscriptable ausgelöst.
Beispielcode:
# Python 3.x
my_list = ["1", "2", "3", "4"]
my_list = map(int, my_list)
print(type(my_list))
my_list[0]
Ausgang:
#Python 3.x
<class 'map'>
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-07511913e32f> in <module>()
2 my_list = map(int, my_list)
3 print(type(my_list))
----> 4 my_list[0]
TypeError: 'map' object is not subscriptable
Beheben Sie den Fehler TypeError: 'map' object is not subscriptable in Python
Konvertieren Sie das Map-Objekt in Python 3 in List
Wenn wir das Kartenobjekt mit der Methode list() in eine Liste umwandeln, können wir die Methoden tiefgestellter Operator/Liste verwenden.
Beispielcode:
# Python 3.x
my_list = ["1", "2", "3", "4"]
my_list = list(map(int, my_list))
print(my_list[0])
Ausgang:
#Python 3.x
1
Verwenden Sie die for-Schleife mit Iterator in Python 3
Wir können auf die Elemente im Iterator mit einer for-Schleife zugreifen. Es ruft die Methode __next__() auf der Rückseite auf und gibt alle Werte aus.
Beispielcode:
# Python 3.x
my_list = ["1", "2", "3", "4"]
my_list = list(map(int, my_list))
for i in my_list:
print(i)
Ausgang:
#Python 3.x
1
2
3
4