0

我有一个接收 3 个列表的函数:

文档1:

[['ser', 'VSIS3S0', 1], ['francisco_villa', 'NP00000', 2], ['norte', 'NCMS000', 1], ['revolucion_mexicana', 'NP00000', 1], ['nombrar', 'VMP00SM', 1], ['centauro', 'NCMS000', 1]]

文档2:

[['pintor', 'NCMS000', 1], ['ser', 'VSIS3S0', 1], ['muralista', 'AQ0CS0', 1], ['diego_rivera', 'NP00000', 1], ['frida_kahlo', 'NP00000', 1], ['caso', 'NCMS000', 1]]

咨询:

[['ser', 'VSIP3S0', 1], ['francisco_villa', 'NP00000', 1], ['quien', 'NP00000', 1]]

功能:

def vectores(doc1,doc2,consulta):
res=[]
l1=[]
cont = 0
r = doc1 + doc2 + consulta
for i in r:
    l1.append(i[0])
for e in doc1:
    if e[0] in l1:
        res.append(e[2])
    else:
        res.append(e[0]==0 * len(l1))
return res

[1, 2, 1, 1, 1, 1] -> res

我需要比较 doc1 的 key[0] 是否存在于 l1 的 key[0] 中,如果存在,则将 key[2] 添加到 res 列表中,如果它们不匹配,则将零添加到 res 列表中,使用长度 l1

我想得到这样的输出:[1, 2, 1, 1, 1, 1, 0, 0, 0, ...]

- 输出向量的元素是列表的键[2] 值。- 零是 doc1 的单词不在 l1 中。- 一旦我有了想要的输出,我还想用 doc2 和 Consulta 重复相同的过程。

先感谢您!;)

4

2 回答 2

0

好吧,我认为这应该这样做,因为顺序无关紧要:

def vectores(doc1,doc2,consulta):
res=[]
l1=[]
cont = 0
r = doc1 + doc2 + consulta
for i in r:
    l1.append(i[0])
    res.append(0) #  create the list w/ zeros
for e in doc1:
    if e[0] in l1:
        res.append(e[2])
    else:
        if e[0] not in l1:
            res.append(0) # I don´t know if this is redundant

return res

res = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, 1]
于 2013-08-20T16:16:34.743 回答
0

鉴于您在评论中给我的解释,这是我的尝试:

def vectores(doc1, doc2, consulta):

    thingies = doc1 + doc2 + consulta
    result = [0] * len(thingies)
    for index,value in enumerate([ item[2] for item in doc1 ]):
        result[index] = value

    return result
print result
>>> [ 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
      <-------------->  <-------------->  <----->
            doc1              doc2        consulta

您正在doc1doc1+doc2+consulta. 我仍然不明白怎么result可能有用,但这就是你问的。

于 2013-08-21T20:48:22.453 回答