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

最も安価な方法(はるかに大きな規模を扱う)私は辞書の最初の値の範囲内にリスト値を調べることができて、合計のすべてのは何ですかそれが表示されるキーに属する値ペアの2番目の値を2番目の値自体に掛けます。私はこのような構造にこれらの値を照合したいと思います。 24 =(3 *(3 + 1 + 2 + 1 + 1))は、例えば

ありがとう

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

+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]} 
関連する問題