2016-11-20 39 views
0

給出一個值列表,例如使用列表從字典中提取值

list1=[19, 25, 100] 

和索引:

i = {'a': {10: 1}, 'b': {100: 3}, 'c': {19: 3, 25: 2, 26: 1, 28: 1, 30: 1}, 'd': {46:4, 100: 1}, 'e': {10: 1, 25: 1, 100: 1}, 'f': {4: 1, 19: 1} 

什麼是最便宜的方法(處理規模更大),與我可以看一下字典的第一個值中的列表值,和所有的屬於它出現在其中的鍵值對的第二個值並將其乘以第二個值本身?我想要這些值在一個像這樣的結構中進行整理。

{{19: [24, 2], 25: [16, 3], 100: [3, 3, 5]}} 

其中24 =(3 *(3 + 2 + 1 + 1 + 1))例如

謝謝。

+2

......什麼是你想在這裏做什麼? –

+0

@ gr1zzlybe4r這是一個信息檢索任務。我試圖在這裏計算tf.idf值 – user1893110

+1

不應該'100'是'[9,3,5]'?至於'b','9 = 3 * 3'。 – Psidom

回答

1

這裏是通過按鍵和字典循環,並構建在旅途中詞典雙環解決方案:

result = {} 
for k in list1: 
    result[k] = [] 
    for v in i.values(): 
     if k in v: 
      result[k].append(v[k] * sum(v.values())) 

result 
# {19: [24, 2], 25: [16, 3], 100: [9, 3, 5]}