Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将列表第j行的元素与其他行匹配_Python_Anaconda - Fatal编程技术网

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。