私が2つ持っているとしましょうset()
:
a = {('1', '2', '3', 'a'), ('1', '2', '4', 'a'), ('1', '2', '5', 'b')}
b = {('1', '2', '3', 'b'), ('1', '2', '4', 'b'), ('1', '2', '6', 'b')}
今、私がしたいことは、セットの違いを見つけることですがb \ a
、すべてのタプルの最後の要素を無視します。つまり、次のようなことをするだけです。
a = {('1', '2', '3'), ('1', '2', '4'), ('1', '2', '5')}
b = {('1', '2', '3'), ('1', '2', '4'), ('1', '2', '6')}
In[1]: b - a
Out[1]: {('1', '2', '6')}
期待される出力:
b \ a = {('1', '2', '6', 'b')}
各セットを手動で反復してそれぞれに対してチェックする必要なしにこれを達成する明白な/ pythonicな方法はありますtuple[:3]
か?
set
差分操作をサブクラス化して上書きします。私が知っているすぐに使用できるソリューションはなく、存在するかどうか疑問です。
aa = { t[:3] for t in a }
tuple
差分演算子をサブクラス化してオーバーライド