2016-04-07 7 views
0

私は、(セットのリストから)セットの各要素をチェックし、それを「マスター」セットと比較して、リストをセットに追加する必要があるプログラムに取り組んでいます。 2つのセットのうちの1つが一致する。セットの要素を比較する際の問題(Python)?

私はリストのようにこの問題を攻撃しようとしましたが、索引付けはセットでは機能しません。

私が達成しようとしているものの例:

newlist = [] 
i = set([5, 3, 1]) # <-- 'Master' Set 
z = set([5, 0, 4]) 

#Output should be -> newlist = [set([5,0,4])] 
+0

今後の参考として、 'set'のドキュメントは[here](https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset)です。 (それは残念なことにGoogleには現れません) – user2357112

答えて

1

zは、あなたの質問の説明ではなく、あなたの添付スニペットのようセットのリストであると仮定します。

newlist = [x for x in z if not i.isdisjoint(set(x))] 
# or newlist = [x for x in z if i.intersection(set(x))] 

Live demo

+0

'not x.isdisjoint(i)'は、交差点集合の作成を避けることを可能にします。 – user2357112

+0

@ user2357112ありがとう! – timrau

+0

Hm ...戻り値AttributeError: 'list'オブジェクトに属性 'intersection'がありません –

0

あなたは交差点の組み合わせを使用してこの問題を解決するために設定することができます。

>>> s1 = set([1,2,3]) 
>>> s2 = set([3,4,5]) 
>>> s3 = set([6,7,8]) 
>>> len(s1.intersection(s2)) 
1 
>>> len(s1.intersection(s3)) 
0 

ので、基本的には2の交差点の長さをチェックするためにif文を書きますセット。 lengthが0より大きい場合は、newlistを2番目のセットと同じにします。

関連する問題