2016-11-20 51 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]}