25.4 딕셔너리 안에서 딕셔너리 사용하기

이번에는 딕셔너리 안에서 딕셔너리를 사용하는 중첩 딕셔너리를 알아보겠습니다. 다음과 같이 딕셔너리는 값 부분에 다시 딕셔너리가 계속 들어갈 수 있습니다.

  • 딕셔너리 = {키1: {키A: 값A}, 키2: {키B: 값B}}

예를 들어 지구형 행성의 반지름, 질량, 공전주기를 딕셔너리로 표현해보겠습니다.

dict_dict.py

terrestrial_planet = {
    'Mercury': {
        'mean_radius': 2439.7,
        'mass': 3.3022E+23,
        'orbital_period': 87.969
    },
    'Venus': {
        'mean_radius': 6051.8,
        'mass': 4.8676E+24,
        'orbital_period': 224.70069,
    },
    'Earth': {
        'mean_radius': 6371.0,
        'mass': 5.97219E+24,
        'orbital_period': 365.25641,
    },
    'Mars': {
        'mean_radius': 3389.5,
        'mass': 6.4185E+23,
        'orbital_period': 686.9600,
    }
}
 
print(terrestrial_planet['Venus']['mean_radius'])    # 6051.8

실행 결과

6051.8

딕셔너리 terrestrial_planet에 키 'Mercury', 'Venus', 'Earth', 'Mars'가 들어있고, 이 키들은 다시 값 부분에 딕셔너리를 가지고 있습니다. 즉, 중첩 딕셔너리는 계층형 데이터를 저장할 때 유용합니다.

딕셔너리 안에 들어있는 딕셔너리에 접근하려면 딕셔너리 뒤에 [ ](대괄호)를 단계만큼 붙이고 키를 지정해주면 됩니다.

  • 딕셔너리[키][키]
  • 딕셔너리[키][키] = 값

여기서는 딕셔너리가 두 단계로 구성되어 있으므로 대괄호를 두 번 사용합니다. 그래서 금성(Venus)의 반지름(mean radius)를 출력하려면 다음과 같이 먼저 'Venus'를 찾아가고 다시 'mean_radius'의 값을 가져오면 됩니다.

print(terrestrial_planet['Venus']['mean_radius'])    # 6051.8