比较列表列表中的子项

时间:2013-08-20 01:47:22

标签: python

我,我2列出:

l = [['red','a1',1],['red','a2',1],['blue','a3',1],['yellow','a4',1]]

k = [['red','a2',1],['blue','a3',1],['yellow','a4',1]]

所以我想要返回这样的内容:

result = [0, 1, 1, 1]

很抱歉我已经练习了一下列表理解!!

我的职能:

def vectors(doc1,doc2,consulta):
    res=[]
    r = doc1 + doc2 + consulta
    for e in r:
        for i in doc1:
            if i[0] == e[0]:
                i[2] = i[2] + 1
        else:
            i[2] = 0
    return res.append(i[2])

顺序无关紧要,重要的是比较。

最诚挚的问候!

2 个答案:

答案 0 :(得分:3)

效率低但容易:

result = [x in k for x in l]

高效(对于大k)但稍微复杂一些:

kset = set(tuple(x) for x in k)
result = [tuple(x) in kset for x in l]

答案 1 :(得分:1)

检查一下:

>>> result = [1 if li in k else 0 for li in l]
>>> result
[0, 1, 1, 1]