1. ホーム
  2. python

なぜPythonの集合はハッシュ化できないのですか?

2023-08-08 06:10:15

質問

私はPythonでpowerset関数を実装する方法を詳細に説明するブログ記事を偶然見つけました。それで、私はそれを行うための私自身の方法を試してみましたが、Pythonは明らかにセットのセットを持つことができないことを発見しました、なぜならセットはハッシュ可能ではないので。パワーセットの定義はセットのセットであり、私は実際のセット操作を使ってそれを実装したかったので、これは癪に障ることです。

>>> set([ set() ])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'

Pythonの集合がハッシュ化できないのは、何か理由があるのでしょうか?

どのように解決するのですか?

一般に、Pythonではimmutableなオブジェクトのみがハッシュ化可能です。 immutableな変形である set() -- frozenset() -- はハッシュ化可能です。