明らかに機能しますが、同じ要素の 2 つのセットがたまたま Dict に 2 つのエントリを追加する場合はありますか? frozenset(...)
以前にこの状態になり、コードを からに変更したと思いますtuple(sorted(frozenset(...)))
。Dictとfrozensetの実装が必要かどうかを確認する方法を知っている人はいますか?
質問する
25851 次
3 に答える
29
a をキーfrozenset
として使用しても安全ですか? はい。dict
ドキュメントによると、Frozenset は不変であるためハッシュ可能です。キーの前提条件はハッシュ可能であるため、これは辞書のキーとして使用できることを意味します。
frozenset 型は不変かつハッシュ可能です — その内容は作成後に変更できません。したがって、辞書キーまたは別のセットの要素として使用できます。
そして重複して、Dictionary docsから:
...任意の不変型のキー
明確にするために、(定義により)セットは、凍結されているかどうかにかかわらず、順序を保持しません。これらは、順序を考慮せずに重複要素を削除して内部的に保存されるため、異なる順序で作成された 2 つのセットは、ディクショナリの同等のキーになります。それらは同じです。
>>> frozenset([1,2,2,3,3]) == frozenset([3,2,1,1,1])
True
同様に、
>>> d = {}
>>> d[frozenset([1,1,2,3])] = 'hello'
>>> d[frozenset([1,2,3,3])]
'hello'
>>> d[frozenset([3,3,3,2,1,1,1])]
'hello'
>>> d[frozenset([2,1,3])]
'hello'
于 2015-02-17T17:03:20.197 に答える
8
于 2015-02-17T17:04:11.387 に答える