Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用零填充从比较中获得的列表_Python_List_Python 2.7 - Fatal编程技术网

Python 用零填充从比较中获得的列表

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:

我有一个函数可以接收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:
    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]