Python:交叉多个List列

时间:2017-08-02 13:57:55

标签: python python-2.7 list

我有3个列表:

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

如何根据第一列(例如abc)找到交叉元素?

我想获得一个新列表,其中包含共享的所有三个列表中的项目'abc'条目。

问候

克里斯

3 个答案:

答案 0 :(得分: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})

答案 1 :(得分: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'}

答案 2 :(得分:0)

感谢您的回复。最后我用一个Pandas Dataframe和感兴趣的列上的内连接做了。