2014-09-17 5 views
0

2 개의 사전이있는이 문제가 있습니다. 하나의 사전에는 이름을 나타내는 키 (예 : 샘플 1, 샘플 2 등)가 있으며 값은 좌표입니다. 두 번째 dict에는 좌표 인 키가 있으며 값은 각 좌표의 데이터입니다.하나의 사전을 사용하여 다른 사전의 값을 가져옵니다.

이름 (키)을 사용하는 두 번째 dict을 작성한 다음 두 번째 dict에서 각 값을 검색해야합니다. 아래와 같이 :

dict1 = {32.0: [[(1, 7)], [(1, 17)], [(1, 8)], [(1, 18)]]} 
dict2 = {(1, 7): 25.746392, (1, 18): 19.4782, (1, 17): 21.7492, (1, 8): 34.492} 

dict3 = {32.0: [[25.746392], [21.7492], [34.492], [19.4782]]} 

더 많은 데이터 요소가 있습니다. 이것이 간단한 문제인지 또는 첫 번째 딕트가 중첩 된 방식으로 인해 문제가 있는지 확실하지 않습니다.

저는 아직 파이썬에 대한 새로운 지식을 가지고 있습니다.

답변

0

두 중첩에 대한-루프 :

dict3 = dict1 
for k in dict3.keys(): 
    for i in range(len(dict3[k])): 
     dict3[k][i] = [dict2[dict3[k][i][0]]] 
print dict3 

출력 :

{32.0: [[25.746392], [21.7492], [34.492], [19.4782]]} 

한 - 라이너 :

dict3 = {k: [[dict2[dict1[k][i][0]]] for i in range(len(dict1[k]))] for k in dict1.keys()} 
+0

I을 이걸 시도해보십시오, 왜냐하면 dict1의 모든 좌표가 dict2에있는 것이 아니기 때문에 KeyError가 발생하지만 'dict2에 k가 아닌 경우'를 추가하면 값이 대체되지 않습니다. 이것은 x가 아닌 [x]를 찾고 있기 때문입니까? –

+0

@JeremyThomas : 글쎄, 당신의 예제는'''dict1'''의 좌표가''dict2''에없는 경우를 다루지 않았습니다. '''if'' 문이 문제를 해결합니까? – Falko

+0

그건 내 잘못이야, 나는 그 중 하나인지 실감하지 못했다. if 문은 문제를 해결하는 것 같지 않지만 올바른 길을 가고 있습니다. 나는 그걸로 계속 놀거야. –

관련 문제