HOWTO · Python

Python で Object Is Not Subscriptable エラーを修正する

Python で object is not subscriptable のエラーを修正する方法

このページの内容

Python では、object is not subscriptable というエラーは自明のことです。Python でこのエラーに遭遇し、解決策を探している場合は、読み続けてください。

Python の object is not subscriptable エラーの修正

まず、このエラーの意味を理解する必要があり、subscriptable が何を意味するのかを知る必要があります。

下付き文字は、要素を識別するためのプログラミング言語の記号または数字です。ですから、object is not subscriptable ということは、そのデータ構造がこの機能を持っていないことが明らかです。

たとえば、次のコードを見てください。

# An integer
Number = 123

Number[1]  # trying to get its element on its first subscript

上記のコードを実行すると、整数に複数の値がないため、エラーが発生します。したがって、整数で下付き文字を使用する必要はありません。さらにいくつかの例を見てみましょう。

# Set always has unique Elements
Set = {1, 2, 3}

# getting second index of set #wrong
Set[2]

セットをいくつかの値で初期化しました。リストや配列と間違えないでください。セットには添え字がありません。つまり、上記のコードでも同じエラーが発生します。

セットから単一の値を表示することはできません。ループを使用して設定値を出力すると、順序に従わないことがわかります。

その値を識別するインデックスはありません。次のコードの出力は、異なる順序の出力を提供します。

# Set always has unique Elements
Set = {1, 2, 4, 5, 38, 9, 88, 6, 10, 13, 12, 15, 11}

# getting second index of set
for i in Set:
    print(i)

文字列またはリストに関しては、添え字を使用して各要素を識別できます。これは、単純な配列から値を出力して取得するようなものです。見てください。

# string variable
string = "Hello I am Python"

print(string[4])

出力:

o

上記のコードは正常に実行され、文字列の 5 番目のインデックス/添え字(0-4)に存在するため、出力は o になります。このオブジェクトは添字可能です。

# function which returns a list
def my_Func():
    return list(range(0, 10))


# correct
print(my_Func()[3])

出力:

3

上記のコードには、サブスクリプト可能なリストを返す関数があります。ご覧のとおり、リストの 3 番目の要素を表示し、添え字とインデックスのメソッドを使用しています。