2017-10-09 12 views
0

私がしようとしているのは、共通の要素に基づいて、リストの識別子を持つリストを分割することです。だから、最初のそれは一例でそれを説明する方が良いでしょうなどPythonで繰り返しリストを分割する

リストのサブセットに存在するもので、すべてのリストの共通項目のすべてを含むリスト、リストを作成:

list A : [ 2, 4, 6, 8, 10 ] 
list B : [ 2, 6, 10, 11 , 13 ] 
list C : [ 3, 6, 8, 9 , 11 ] 
===> OUTPUT : 
([ A, B, C ] : [6]) , 
([ A, B ] : [ 2, 10 ]) , 
([ A, C ] : [ 8 ]) 
([ B, C ] : [ 11 ]) , 
([ A ] : [ 4 ]) , 
([ B ] : [ 13]) , 
([ C ] : [ 3 , 9 ] 

私は紙にそのを通じて作業の方法を見つけることができます。

  • は、AとB A&B = [2,6,10], A = [ 4,8] , B = [ 11,13 ]
  • からこれらの項目を削除し、& B interestion見つけ、その後のinterectionを見つけます、今はA&B becomes [ 2, 10 ]です。
  • が繰り返しこのように継続し、すべての時間は、彼らの新しいコンテンツなど

しかし、上記の私にはそうニシキヘビいないようで、私のリストを更新する - と私は、Pythonにかなり新しいユーザーです。私がそうするのを助けるライブラリを使用することはできますか?私はPython 2.7を使うつもりですが、もしPython 3に行くと助けてもらえますか?

+1

使用セットを取得します。 – Igle

+0

上記の内容は? *仕様*を投稿しただけです。 –

+0

これは*格子構造のように見えます。 –

答えて

1

私がコメントするのに十分な評判を持っていない、と私は、これはそれを行うための最善の方法、多分助けることができる迅速なものではありません確信しています。

あなたは手紙に各リストを関連付ける辞書で起動した場合:

lists = { 
'A' : [2,4,6,8,10], 
'B' : [2,6,10,11,13], 
'C' : [3,6,8,9,11] 
} 

あなたがdefaultdictやコレクションライブラリのチェックに慣れていない場合は、その後、これに似たような(との出現をマッピングすることができますそれアウト、それはあなたがグループに値でのdict発生を別の辞書を使用し、その後

from collections import defaultdict 

occurrences = defaultdict(list) 

for letter, values in lists.items(): 
    for value in values: 
     occurrences[value].append(letter) 

)素晴らしいです

result = defaultdict(list) 
for value, letters in occurrences.items(): 
    result[tuple(letters)].append(value) 

、あなたがこの問題の

{('A',): [4], 
    ('A', 'B'): [2, 10], 
    ('A', 'B', 'C'): [6], 
    ('A', 'C'): [8], 
    ('B',): [13], 
    ('B', 'C'): [11], 
    ('C',): [3, 9]} 
1

プログラミングコンテストなどではどうですか?

>>> A=[ 2, 4, 6, 8, 10 ] 
>>> B =[ 2, 6, 10, 11 , 13 ] 
>>> C =[ 3, 6, 8, 9 , 11 ] 
>>> r=set(A+B+C) 
>>> l=[[] for i in r] 
>>> for index,i in enumerate(r): 
    add=[] 
    if i in A: 
     add.append("a") 
    if i in B: 
     add.append("b") 
    if i in C: 
     add.append("c") 
    l[index].extend(add) 


>>> d={} 
>>> for i in r: 
    d[i]=0 


>>> for index,i in enumerate(d): 
    d[i]=l[index] 


>>> final={} 
>>> for i in d.values(): 
    final[tuple(i)]=[] 


>>> for k,v in d.items(): 
    final[tuple(v)].append(k) 


>>> final 
{('c',): [3, 9], ('a',): [4], ('a', 'c'): [8], ('a', 'b'): [2, 10], ('a', 'b', 'c'): [6], ('b', 'c'): [11], ('b',): [13]} 
>>> 
+0

sppedの必要はありません - 私はAPIから取得したデータに対して何らかのフィルタリングを行うスクリプトを書こうとしています。上記の感謝をチェックします! – ghostrider

関連する問題