首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将列表与公共元素组合

将列表与公共元素组合
EN

Stack Overflow用户
提问于 2018-12-21 22:05:32
回答 3查看 1.8K关注 0票数 11

假设我有下面的嵌套列表:

代码语言:javascript
复制
L = [['John','Sayyed'], ['John' , 'Simon'] ,['bush','trump'],
     ['Sam','Suri','NewYork'],['Suri','Orlando','Canada']]

如何通过获得与组中至少另一个子列表具有共同元素的子列表的并集来对这些子列表进行分组?因此,对于前面的示例,结果应该是:

代码语言:javascript
复制
[['John','Sayyed','Simon'] ,['bush','trump'],
 ['Sam','Suri','NewYork','Orlando','Canada']]

因此,前两个子列表由于共享'John'而连接在一起。有没有人能分享他们宝贵的想法?

EN

回答 3

Stack Overflow用户

发布于 2018-12-22 00:20:09

一个简单的方法

代码语言:javascript
复制
L = [['John','Sayyed'], [ 'John' , 'Simon'] ,['bush','trump']]
L[0].extend([x for x in L[1] if x not in L[0]])
L.pop(1)
print(L) 

看见

List Comprehensions

Append vs Extend

票数 1
EN

Stack Overflow用户

发布于 2018-12-21 22:31:11

要合并两个列表:

代码语言:javascript
复制
merge = lambda l1, l2: l1 + [ x for x in l2 if x not in l1 ]

为了更高效,在l1上创建一个set

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 06:05:14

您可以在networkx中使用函数connected_components

代码语言:javascript
复制
import networkx as nx 
​
L = [['John','Sayyed'], ['John' , 'Simon'] ,['bush','trump'],
     ['Sam','Suri','NewYork'],['Suri','Orlando','Canada']]
​
G = nx.Graph()
​
for i in L:
    G.add_path(i)
​
lst = list(nx.connected_components(G))
print(lst)

输出:

代码语言:javascript
复制
[{'John', 'Sayyed', 'Simon'},
 {'bush', 'trump'},
 {'Canada', 'NewYork', 'Orlando', 'Sam', 'Suri'}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53886120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档