2016-07-06 3 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']] выдадут [['A ',' B ',' X ',' Y '], [' C ',' D ',' Z ',' U ']]. Но первые два списка не перекрывали друг друга, поэтому их нельзя было объединить. –