2013-08-20 95 views
0

我具有接收3只列出一個函數而獲得的列表:用零填充從比較

DOC1:

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

DOC2:

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

CONSULTA:

[['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 

我需要的,如果關鍵[0] DOC1的存在,在關鍵的比較[0] L1的,如果是追加鍵[2]的資源列表,,如果它們不匹配追加零在資源列表建設有lenght L1矢量

我想獲得一個輸出像這樣:[1, 2, 1, 1, 1, 1, 0, 0, 0, ...]

輸出向量的-The元素是列表的關鍵[2]值。 - 零將doc1的單詞不在l1中。 - 一旦我有願望輸出,我也想重複與doc2和consulta相同的程序。

預先感謝您! ;)

+0

你可能想要重新配置,我不明白你想要做什麼。 –

+0

因此,您無法獲取'res.append(e [0] == 0 * len(l1))'部分來將0放入列表中?你還沒試過res.append(0)? – taronish4

+0

是的,我試過res.append(0),它不起作用cuz,len(doc1)比len(l1)小。我需要在沒有值的情況下len(res)等於len(l1)w/zeros。 – JPP

回答

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可能是有用的,但這是你問。

0

嗯,我認爲這應該這樣做的Cuz順序並不重要:

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] 
+0

隨意評論,如果你可以簡化這一點。謝謝;) – JPP

+0

你的結果不是你要找的。您的結果包含與'len(l1)'加上'doc1'的'key [2]'一樣多的'0'。你最終想要什麼? –

+0

這就是我的想法:只要包含'0'或'doc1 [i] [2]'的len(doc1 + doc2 + consulta)''''''''''''有什麼意義?你可以完成'res = [0] * len(l1)' –