2016-05-20 11 views
1

私は値として集合を含む辞書を持っていますが、私はforループを使ってこれらの集合の和集合を作りたいと思います。私はforループでset.union()を使用しようとしましたが、私はこれが動作しているとは思わない、この繰り返しを行う簡単な方法は?集合の和集合を作るための反復

for key in self.thisDict.keys(): 
     for otherKey in self.thisDict.keys(): 
      if otherKey!=key: 
       unionSet=set.union(self.thisDict[otherKey]) 

私が思っている問題は、すべてのセットの組合を作っていないということです。私は大量のデータを扱っているので、伝えるのは難しいです。私が作成しているunionSetオブジェクトを使って、このデータを印刷していて、それが期待どおりの大きさではないようです。

+1

あなたが試したコードとどのような正確な問題を共有することができますあなたはそれを持っていますか? – Mureinik

答えて

2

結果セットを作成し、dict値を繰り返して結果を更新します現在の反復で見つかった値で設定します。 |=set.updateメソッドのエイリアスです。

簡単なセットの理解がどうなる
d = {1: {1, 2, 3}, 2: {4, 5, 6}} 
result = set() 
for v in d.values(): 
    result |= v 

assert result == {1, 2, 3, 4, 5, 6} 
1

>>> d = {1: {1, 2, 3}, 2: {4, 5, 6}} 
>>> {element for value in d.values() for element in value} 
{1, 2, 3, 4, 5, 6} 

私の目には、これはより読みやすい:

>>> from itertools import chain 
>>> set(chain.from_iterable(d.values())) 
{1, 2, 3, 4, 5, 6} 
関連する問題