web-dev-qa-db-ja.com

Python 'set'オブジェクトはインデックス作成をサポートしていません

Python(3.2.2)シェルでWindows 7 OSに取り組んでいます。入力した言語を学習しようとすると、次のように返されます。

>>> cast = {
    'cleese',
    'Palin',
    'Jones',
    'Idle'
    }
>>> print (cast[1])
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    print (cast[1])
TypeError: 'set' object does not support indexing
>>> cast.append('Gilliam')
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    cast.append('Gilliam')
AttributeError: 'set' object has no attribute 'append'

==========================

問題はコーディングではなく、プログラムのインストール方法にあるようです。

インストール、アンインストール、再インストールしましたが、結果は同じです。 Pythonのシェルを使用する準備が整う前にやらなければならないことがありますか?

ハンス

8
user1157504

Pythonは正常に動作しているようです。重要なのは、setはインデックス作成や追加をサポートしていないということです。代わりにリストを使用してみてください([] の代わりに {})。追加の代わりに、setにはaddがありますが、インデックス付けは行われていません。

そしてPythonには便利なヘルプがあります、

>>> help(set)

setsに関する多くの情報を出力します。

19
Daniel Fischer

リストを定義しようとしていたようです。ただし、角かっこ[]の代わりに中かっこ{}を使用しました。インタプリタはそれをリストではなく辞書として扱ったため、ここではindexingとappend()は機能しませんでした。

4
Yang Meng

ここで言及するだけで、set's'はハッシュベースであるため、インデックス作成をサポートしていません。これは、インデックス作成もサポートしていないdictionariesと非常によく似ています。 dictにアクセスできるのはkeyだけです。

インデックス作成が必要な場合は、次のようにセットを変換できます。

convertedToList = list(set(1,2,3))
2
user1767754