我想解決一個問題,並已陷入困境。基本上我想要做的是這樣的: 我給出的格式的詞典:Python列表追加
dr= {'student1067': ['0', '0', '0'], 'student1068' : ['1', '2', '5'], 'student1069': ['7','6','2'],.....
博士是一本字典,其中鍵是學生身份(如:「student1068」),和值表字符串,其中每個元素是特定書籍的評分。
然後我給出的相似列表,格式爲:
SimList= [('student1067', 40), ('student1068', 40), ('student1069', 35).......]
SimList是元組,其中元組的第一個元素是學生身份的列表,第二個元素是相似的評價。
我基本上想要做的是通過SimList中每個元組的第一個元素,並在dr中查找相同的密鑰。如果第一個元素和鍵匹配,我想使用SimList中的元組的第二個元素乘以字典值的所有元素。 因此,例如,對於學生1067,詞典中的值將全部乘以40.對於學生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」語句的錯誤,因爲我的代碼工作不正常。你們能幫我嗎?
非常感謝, 我對這個長問題感到抱歉。
好吧,這將更新博士,以便每個學生鍵的值將是當前列表值。你如何建議我做最後的部分,並根據指數在每個值列表中添加所有元素? – user2904796
關於downvote當你編輯它.. +1 :) – aIKid
非常感謝!欣賞它。 – user2904796