Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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_Append - Fatal编程技术网

Python列表附加

Python列表附加,python,list,append,Python,List,Append,我在这里试图解决一个问题,但我被卡住了。基本上我想做的是: 我收到一本字典,格式如下: dr= {'student1067': ['0', '0', '0'], 'student1068' : ['1', '2', '5'], 'student1069': ['7','6','2'],..... SimList= [('student1067', 40), ('student1068', 40), ('student1069', 35).......] dr是一个字典,其中键是学生身份(例如

我在这里试图解决一个问题,但我被卡住了。基本上我想做的是: 我收到一本字典,格式如下:

dr= {'student1067': ['0', '0', '0'], 'student1068' : ['1', '2', '5'], 'student1069': ['7','6','2'],.....
SimList= [('student1067', 40), ('student1068', 40), ('student1069', 35).......]
dr是一个字典,其中键是学生身份(例如:“student1068”),值是字符串列表,其中每个元素是特定书籍的评级

然后,我会收到一份类似列表,格式如下:

dr= {'student1067': ['0', '0', '0'], 'student1068' : ['1', '2', '5'], 'student1069': ['7','6','2'],.....
SimList= [('student1067', 40), ('student1068', 40), ('student1069', 35).......]
SimList是一个元组列表,其中元组的第一个元素是学生身份,第二个元素是相似性评级

我基本上想做的是遍历SimList中每个元组的第一个元素,并在dr中查找相同的键。如果第一个元素和键匹配,我想使用SimList中元组的第二个元素乘以dictionary值的所有元素。 例如,对于student 1067,字典中的值将全部乘以40。对于student 1068,字典中的值也将全部乘以40。对于学生1069,所有的值都将乘以35。 最后,我想要一个将所有这些值相加的列表

student1067---40 * [0,0,0] = [0,0,0]

student1068---40 * [1,2,5] = [40,80,200]

student1069---35 * [7,6,2]  = [245,210,70]

--------------------------------

Final List= [285, 290, 270]
所以基本上,我希望最终的列表是通过添加各个索引值得到的。到目前为止,我的代码如下所示:

    FinalList=[]
    for item in SimList:
        CurrentList=[]
        if item[0] in dr:
            CurrentList.append(item[0]*int(x) for x in dr[item[0]])
        if FinalList==[]:
            FinalList=CurrentList
        else:
            FinalList=[FinalList[i] + CurrentList[i] for i in range(len(FinalList))]
   print FinalList
因此,
FinalList
将是我的最终列表,而
CurrentList
是为每个学生创建的临时列表,每次函数运行时都会恢复为空列表。然而,我想我把FinalList的“if”和“else”语句放错了位置,因为我的代码工作不正常。你们能帮帮我吗

非常感谢, 很抱歉问了这么长的问题。

这对我来说很有用:

FinalList = [(k, [int(i)*v for i in dr[k]]) for k, v in SimList]
TotalList = [sum(x) for x in zip(*(j for i in FinalList for j in i[1:]))]
dr= {'student1067': ['0', '0', '0'], 'student1068' : ['1', '2', '5'], 'student1069': ['7','6','2']}
SimList= [('student1067', 40), ('student1068', 40), ('student1069', 35)]
FinalList=[]

for item in SimList:
    CurrentList = []
    if(item[0] in dr):
        CurrentList.append([ item[1] * int(x) for x in dr[item[0]]])
    if(FinalList==[]):
        FinalList=CurrentList
    else:
        FinalList=[FinalList[i]+CurrentList[i] for i in range(len(FinalList))]
print FinalList

事实证明,在将列表追加到CurrentList时,您使用了项[0]进行乘法,而不是项[1]

好的,这将更新dr,这样每个学生密钥的值都将是当前列表值。你建议我如何做最后一部分,并根据索引在每个值列表中添加所有元素?非常感谢!谢谢。