2012-10-26 2 views
0
states = {state, abbr} 
cities = {abbr, capital} 

state, abbr, capital 또는 다른 값의 3 가지 값을 인쇄하고 싶습니다. (나는 완전히 이해가 안와 새로운 딕셔너리를 만들려고 다음두 사전으로부터 인쇄

states = {abbr, state} 
cities = {abbr, capital} 

를 실행 한 다음, 지금은있어

inv_states = {state: abbr for abbr, state in states.items()} 
for abbr, capital in sorted(inv_states.items()): 
     print(abbr, ':', capital) 

: 나는 함께 상태에서 키 값 쌍을 반전 시도 아래 코드) :

newDict = defaultdict(dict) 
for abbr in (inv_states, cities): 
     for elem in abbr: 
       newDict[elem['index']].update(elem) 
fullDict = newDict.values() 
print(fullDict) 

그러나 나는 string indices must be intergers 오류를 받고 있어요.

조금 도와주세요. 아니면 완전히 잘못된 길을 가고 있습니까? 감사.

+0

여기 다소 혼란 스럽습니다. 너 뭐하려고? – Blender

+3

'{state, abbr}', 이것은 사전이 아니라 집합입니다. –

+0

수정 사항을 저장하기 전에 질문의 모양을 확인하십시오. – Blender

답변

3

데이터가 사전에 있다고 가정합니다 (예제 코드에는 없습니다). 찾고있는 데이터를 매우 간단하게 처리해야합니다.

for state, abbr in states.items(): 
    print('{0}, {1}, {2}'.format(state, abbr, cities[abbr])) 
+1

이것은 (질문 제목이 요구하는대로) Python 3.1에서는 작동하지 않습니다. 'print'는 함수 여야합니다. –