Python将列表第j行的元素与其他行匹配
我有一个列表,我想在其中比较特定列的所有元素以找到匹配项。更具体地说,我有下表:Python将列表第j行的元素与其他行匹配,python,anaconda,Python,Anaconda,我有一个列表,我想在其中比较特定列的所有元素以找到匹配项。更具体地说,我有下表: Item_No. features A ['X','Y','Z'] B ['X','Y'] C ['Y'] D ['S'] 我想看看A项与其他项目是否有共同之处。在这种情况下,我想得到如下结果: Item_No. features Common A ['X','Y','Z'
Item_No. features
A ['X','Y','Z']
B ['X','Y']
C ['Y']
D ['S']
我想看看A项与其他项目是否有共同之处。在这种情况下,我想得到如下结果:
Item_No. features Common
A ['X','Y','Z'] B,C
B ['X','Y'] A,C
C ['Y'] A,B
D ['S'] 0
我将如何在python上进行此操作
def common(x,y):
"""Do list x and y have an element in common?"""
for e in x:
if e in y:
return True
return False
#listnames and their content
data = [('A',['X','Y','Z']),
('B',['X','Y']),
('C',['Y']),
('D',['S'])]
# touples of listnames and an array of listnames it
data_common = [] overlaps with
# try common on each pair of lists saving their names.
for N,A in d:
data_common.append((N,[n for n,a in data if(n is not N and common(A,a))]))
print(data_common)
输出:[('A',['B','C']),('B',['A','C']),('C',['A','B']),('D',[])]
这是相当昂贵的,关于O(m^2*n^2)
,m=max(len(data[,1]),n=len(data)
当然,也可以进行优化,因为每个列表都是根据
彼此两次。你是不是先自己试过?为什么B和C没有共同点?您应该更正该示例或指定公共。OT:添加到问题中的标签看起来有点牵强。@nitzel-编辑。正如Kedar Kodgire所说的,如果您向我们展示您的尝试,我们愿意帮助您。据我所知,您了解中的
和中的。这对您的任务来说是一个很好的开始。很抱歉,我在发布问题后有点忙,无法发布我的工作代码。非常感谢@nitzel。