2016-11-20 1 views
0

예를 들어 값의 목록이 주어진다.목록을 사용하여 사전에서 값 추출하기

list1=[19, 25, 100] 

및 인덱스 : 나는 DICT의 첫 번째 값 내에서 목록 값을 조회 할 수있는 (훨씬 더 큰 규모의 처리) 비용이 가장 적게 드는 방법을 무엇

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]}