我有兩個庫和列表如下蟒巨大的字典比較
list1 =[['3', {'3': ['4'], '10': ['2'], '9': ['8'], '11': ['8']}],
['8', {'7': ['8'], '6': ['9'], '3': ['1']}],
['7', {'5': ['11'], '10': ['6'], '2': ['3']}],
['9', {'4': ['1']}]
]
list2 ={0: -2.829363315837061, 1: -3.483150971596311, 2: -3.55866903680906, 3: -3.644673448138691, 4: -3.78, 5: -3.9343704669124677, 6: -4.1158785480167435, 7: -4.074895059134982, 8: -4.397225116848732, 9: -4.425674125747298, 10: -4.416164011466592, 11: -4.906491662382141}
list3 ={0: -2.865996006819783, 1: -3.6503055799900492, 2: -3.58670223884185, 3: -3.73129019873609, 4: -3.73, 5: -4.049442571308586, 6: -4.086222130931718, 7: -4.19022476024935, 8: -4.243919389901362, 9: -4.246976004644184, 10: -4.334028831306514, 11: -4.678255063114617}
我想獲得與基於列表1鍵從兩個字典的鍵(列表2和項目list3)關聯的值如果密鑰相同,然後將與列表1具有相同密鑰的列表2的值與列表1的值相乘,並將這些值與列表3的列表1中的每個列表相加。
for index in range(len(list1)):
tot_pos_probability = 0
tot_neg_probability =0
for the_key, the_value in list1[index][1].items():
for item in list2.keys():
if int(the_key) == item:
tot_pos_probability += int(the_value[0])*list2.get(item)
for elem in list3.keys():
if int(the_key) == elem:
tot_neg_probability += int(the_value[0])*list3.get(elem)
上面的代碼工作完全正常,給我的結果如預期的上述列表和字典的例子。
但我的原始list1大小約爲15000,list1中的每個字典包含大約200-400個鍵值對。類似地,兩個字典list2和list3也包含大約10000個唯一鍵值對。上面的代碼工作起來很差這種情況下,我無法得到任何結果。它保持運行10分鐘,沒有結果。請你幫我一個優化的解決方案,在這種情況下真的很好。
它給出的值爲0 – krish
哦,等待,忘了投射到int,現在嘗試。 –