2016-07-06 9 views
2

オーバーラップを持つネストされたリストをマージする必要があります。私は、リスト内包とおそらくdifflibを使用したインテリジェントなソリューションが必要だと考え続けていますが、どのように動作するべきかを理解することはできません。 私のリストは、次のようになります。オーバーラップのネストされたリストのマージ

[['C', 'x', 'F'], ['A', 'D', 'E']] 

[['x', 'F', 'G', 'x'], ['D', 'E', 'H', 'J']]. 

彼らは、マトリックスの行のように、他の上にあります。そのため、彼らは

[['x', 'F'], ['D', 'E']]). 

の形で(重複を持つマージが得られるはず:私はこれを達成するにはどうすればよい

[['C', 'x', 'F', 'G', 'x'], ['A', 'D', 'E', 'H', 'J']]. 

+0

さて、何を試しましたか? – marcusshep

+0

私が言ったように、リスト内包、difflib、マージ手動で心に来た。私はエレガントな解決策があると確信しています、私は非エレガントなもの(手動でマージ)を考えることができます。私の質問です:他の誰かがエレガントなものを考えることができますか? –

答えて

0

あなたはこのような何かを試すことができ

list1 = [['C', 'x', 'F'], ['A', 'D', 'E']] 
list2 = [['x', 'F', 'G', 'x'], ['D', 'E', 'H', 'J']] 

for x in range(len(list1)): 
    for element in list2[x]: 
     if element not in list1[x]: 
      list1[x].append(element) 
    print list1[x] 
を?。

出力:

['C', 'x', 'F', 'G'] 
['A', 'D', 'E', 'H', 'J'] 

私はこれがあなたを助けてくれることを願っています。

+0

こんにちは、ありがとう! :)残念ながら、これはマージされていないリストもマージします。[['A'、 'B']、['C'、 'D']]および[['X'、 'Y']、['Z'、 'U']] '、' B '、' X '、' Y ']、 [' C '、' D '、' Z '、' U ']]。しかし、最初の2つのリストには重複がないので、マージするべきではありません。 –

関連する問題