2016-04-18 14 views
0

つ以上の類似のアイデンティティとリストのindexessを得る:リストのリストの実体を比較すると</p> <p>入力、次のように私はリストのリストを持っている

[(21, 5, 4, 3), (21, 4, 1, 2), (21, 5, 1), (22, 8, 4, 2), (22, 4, 6, 7), (22, 8, 6)] 

リスト内の各リストは常に持っている唯一の整数を。私は、少なくとも2つのエントリが同じであるリストを見つけて、そのリストのインデックスを保存して印刷したいと考えています。

出力:見つかったペアの数の指標で出力の

0 0 1 
1 0 2 
2 1 2 
3 1 3 
4 3 4 
5 3 5 
6 4 5 

まず列。 第2列第3列は、2つ以上の類似したエンティティを持つリストのインデックスを示します。 list [0] [0]のような各要素へのアクセス権を持つリストのリストを得ることができれば、0(最初のペア)を与え、リスト[0] [1]は最初のペアとリスト[0] [2]は第1のペアの第2のエンティティなどを与える。それは私の要求に従ってそれを解析することができるようにさらに良いでしょう。

解析と印刷は問題ありません。

よろしく

+1

出力の説明をしっかり入力してください – kvivek

+2

タプルが6つしかないので結果の最後の行は '6 4 5'ではないはずですか? – niemmi

+0

@niemmi、あなたは正しいです。私のエラー。正確に私はこれを自動化したいこの理由のために:( –

答えて

2

あなたがセットにタプルを変換する可能性があり、次の操作を行います

d = [(21, 5, 4, 3), (21, 4, 1, 2), (21, 5, 1), (22, 8, 4, 2), (22, 4, 6, 7), (22, 8, 6)] 
d = [set(l) for l in d] 
index = 0 
res = [] 

for i in xrange(len(d) - 1): 
    for j in xrange(i + 1, len(d)): 
     if len(d[i] & d[j]) >= 2: 
      res.append([index, i, j]) 
      index += 1 

print res # [[0, 0, 1], [1, 0, 2], [2, 1, 2], [3, 1, 3], [4, 3, 4], [5, 3, 5], [6, 4, 5]] 

これは、Python 2.xのために働く、3.xのためにあなたの代わりに代わりxrangeprint機能のrangeを使用する必要があります声明の

関連する問題