我有点脑筋急转弯,给出这样的数据:
data = [('topic1', (['apples', 'oranges'], 0.14975108213820515)),
('topic2', (['oranges', 'raisins'], 0.14975108213820515)),
('topic3', (['grapes', 'raisins'], 0.14975108213820515)),
('topic4', (['trees', 'flowers'], 0.14975108213820515))]
我想根据数组中(元组第二个元素的第一个元素中)是否至少有一个文本是公共的来连接主题。所以在上述情况下:
topic1 is connected to topic2
topic2 is connected to topic1 and topic3
topic3 is connected to topic2
topic4 is unconnected
理想情况下,我的输出如下所示:
output = [(topic1,topic2),
(topic1,topic2, topic3),
(topic3, topic2),
(topic4)]
所以,给定像data
这样的输入,我怎么能得到像output
这样的输出。我认为itertools可能会牵涉其中,但我真的被困在这一点上。你知道吗
一个简单的双for循环:
一种有效的方法是使用
set
s所以,基本上:
len
您可以创建一个包含列表的字典来捕获连接:
这将连接值映射到主题集。你知道吗
现在可以查找反向连接;如果顺序不重要,只需获取所有连接值集的并集:
演示:
否则,先从集合中移除
topic
到前面:相关问题 更多 >
编程相关推荐