Python 用零填充从比较中获得的列表
我有一个函数可以接收3个列表: 文件1: 文件2: 领事:Python 用零填充从比较中获得的列表,python,list,python-2.7,Python,List,Python 2.7,我有一个函数可以接收3个列表: 文件1: 文件2: 领事: [['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:
[['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的键[0]是否存在于l1的键[0]中,如果存在,则将键[2]附加到res列表,如果它们不匹配,则将零附加到res列表,以构建长度为l1的向量
我希望得到如下输出:[1,2,1,1,1,1,1,0,0,…]
-输出向量的元素是列表的键[2]值。
-零表示doc1的字不在l1中。
-一旦我有了欲望输出,我还想对doc2和consulta重复同样的过程
先谢谢你!;) 好吧,我认为这应该可以,因为顺序无关紧要:
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]
根据您在评论中给我的解释,以下是我的尝试:
def向量机(doc1、doc2、consulta):
thingies=doc1+doc2+consulta
结果=[0]*len(thingies)
对于索引,枚举中的值([doc1中项目的项目[2]):
结果[索引]=值
返回结果
打印结果
>>> [ 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
doc1 doc2领事馆
您正在将
doc1
与doc1+doc2+consulta
进行比较。我仍然不明白结果如何有用,但这就是你所问的。你可能想重新格式化,我不明白你想做什么。所以你在让res.append(e[0]==0*len(l1))
部分将0放入列表时遇到了问题?你还没有试过res.append(0)?是的,我试过res.append(0),但它不起作用,因为len(doc1)比len(l1)小。在没有值的情况下,我需要len(res)等于len(l1)w/零。如果可以简化,请随意评论。谢谢;)你的结果不是你想要的。您的结果包含的0
与len(l1)
加上doc1
的键[2]
。你到底想要什么?这就是我想的:你确实想要建立一个列表,只要len(doc1+doc2+consulta)
包含0
或doc1[I][2]
。重点是什么?你可以只做res=[0]*len(l1)
好吧,我仍然没有得到你想要做的(尽管我很确定这并不难实现)。请更新您的帖子,这样我一方面可以看到您初始数据的内容(doc1
、doc2
和consulta
),另一方面可以看到您希望获得的这些特定初始数据的实际结果。这样我就可以正确地理解您想要实现的目标。我想将doc1的第一个元素与r=doc1+doc2+consulta进行比较,如果存在,则将第三个元素放在res列表中,如果不放零。
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
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]