2017-08-02 58 views
-1

我有3名列表:的Python:多相交名单列

a = [[abc, def, ghd], [...], ...] 
b = [[abc, olnaf, kjbdsa], [...], ...] 
c = [[abc, aeufga, älaga], [...], ...] 

如何找到基于第一列(例如ABC)的交叉元素?

我想得到一个新的列表与所有三个列表的项目共享,例如'abc'条目。

问候

克里斯

+0

您的意思是基于'abc',您想要显示'a','b'和'c'中的哪些子列表包含此元素? –

+0

请向我们展示您尝试过的内容以及作为特定输入结果而期待的结果... – Roberto

回答

0

感谢您repliey直接找到交叉点。我最终用一个Pandas Dataframe和一个感兴趣的列上的内连接做了。

0

你的意思是串在第一列的第一个项目的出现次数?

column = 0 

a = [["abc", "def", "ghd"], [], []] 
b = [["abc", "olnaf", "kjbdsa"], [], []] 
c = [["abc", "aeufga", "älaga"], [], []] 

from collections import Counter 
Counter([i[0] for i in list(zip(a,b,c))[column]]) 

打印

Counter({'abc': 3}) 
0

可以使用套

a = [["abc", "def", "ghd"], ["1", "2", "3"]] 
b = [["abc", "olnaf", "kjbdsa"], []] 
c = [["abc", "aeufga", "älaga"], ["1", "2"]] 

for i, (a, b, c) in enumerate(zip(a, b, c)): 
    print("Index", i) 
    print(" a & b:", set(a) & set(b)) 
    print(" b & c:", set(b) & set(c)) 
    print(" a & c:", set(a) & set(c)) 

输出

Index 0 
    a & b: {'abc'} 
    b & c: {'abc'} 
    a & c: {'abc'} 
Index 1 
    a & b: set() 
    b & c: set() 
    a & c: {'2', '1'}