6

myset参照が異なっていても等しい可能性のあるカスタムオブジェクトのセットがあるとします( a == b and a is not b)。これで、セットにアクセスすると、セットにオブジェクトしかない場合でもadd(a)、Pythonは正しく想定します。a in myset and b in mysetlen(myset) == 1

それは明らかです。aしかし、今では、のみを使用して、セットから何らかの形での値を抽出することが可能bですか?オブジェクトが可変であり、への直接参照を忘れて、両方を変更したいとしaます。言い換えれば、セットmyset[b]のメンバーを正確に返す操作を探しています。a

タイプsetはこれを行うことができないようです(すべてのメンバーを反復処理するよりも高速です)。もしそうなら、少なくとも効果的な回避策はありますか?

4

3 に答える 3

5

setO(1)時間でのアイテムの取得をサポートしているとは思いませんが、dict代わりに使用できます。

d = {}
d[a] = a
retrieved_a = d[b]
于 2012-06-17T14:50:51.427 に答える
0

とだけを持っている場合mysetbその観点からは、そこにないaためにアクセスできません。複数の可変オブジェクトを作成し、そのうちの1つを追加すると、他のオブジェクトは、単にまたは追加したオブジェクトをmyset処理しているときに「不明」になります。myset

a変更したい場合bは、両方のオブジェクトをどこかで追跡する必要があります。

于 2012-06-17T14:51:30.227 に答える
0

多分これ:

(myset - (myset - set([b]))).pop() is a
于 2012-06-17T15:08:25.077 に答える