【问题标题】:Merging nested lists with overlap合并具有重叠的嵌套列表
【发布时间】:2023-03-23 07:41:01
【问题描述】:

我必须合并有重叠的嵌套列表。我一直认为必须有一个使用列表推导和可能 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']].

我怎样才能做到这一点?

【问题讨论】:

  • 嗯,你试过什么?
  • 正如我所说,列表推导、difflib、手动合并浮现在脑海中。我很确定有一个优雅的解决方案,我只能想到一个非优雅的解决方案(手动合并)。我的问题是:别人能想到优雅的吗?

标签: python list merge nested difflib


【解决方案1】:

你可以试试这样的。

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']

希望对你有帮助。

【讨论】:

  • 您好,谢谢! :) 不幸的是,这也会合并不应该合并的列表,例如[['A', 'B'], ['C', 'D']] 和 [['X', 'Y'], ['Z', 'U']] 将产生 [['A' , 'B', 'X', 'Y'], ['C', 'D', 'Z', 'U']]。但前两个列表没有重叠,因此不应合并。
猜你喜欢
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 2023-03-12
  • 2021-07-15
  • 1970-01-01
相关资源
最近更新 更多