> For the complete documentation index, see [llms.txt](https://codebook.horang.it/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codebook.horang.it/readme/undefined-1.md).

# 중첩 딕셔너리와 리스트

### 코드

{% code title="중첩 딕셔너리 (딕셔너리 안에 딕셔너리를 넣는 경우)" %}

```
{딕셔너리_이름} = {
    키1: 값1,
    키2: {
        하위키1: 값A,
        하위키2: 값B
    }
}

{딕셔너리_이름}["키2"]["하위키1"]
```

{% endcode %}

{% code title="딕셔너리 안에 리스트를 넣는 경우" %}

```
{딕셔너리_이름} = {
    키1: 값1,
    키2: [값A, 값B, 값C]
}

{딕셔너리_이름}["키1"]
{딕셔너리_이름}["키2"][0]
```

{% endcode %}

{% code title="리스트 안에 딕셔너리를 넣는 경우" %}

```
{리스트_이름} = [
    {키1: 값1, 키2: 값2},
    {키1: 값1, 키2: 값2},
    {키1: 값1, 키2: 값2}
]

{리스트_이름}[0]
{리스트_이름}[0]["키1"]
```

{% endcode %}

***

### 설명

**딕셔너리**는 키(key)와 값(value)의 형태로 데이터를 저장하는 자료형이에요.\
**리스트**는 여러 개의 데이터를 순서대로 저장하는 자료형이에요.

이 두 가지를 함께 사용하면\
구조가 있는 복잡한 데이터를 매우 깔끔하게 표현할 수 있어요.

특히 다음과 같은 상황에서 자주 사용돼요.

* 여러 사람의 정보 관리
* 인공지능 분류 결과를 여러 개 저장할 때
* 게임 기록, 설정 값, 사용자 정보처럼 비슷한 형식의 데이터가 많을 때

딕셔너리 안에 딕셔너리를 넣으면 중첩 딕셔너리가 되고,\
딕셔너리 안에 리스트를 넣거나, 리스트 안에 딕셔너리를 넣어\
현실 세계의 정보 구조를 그대로 표현할 수 있어요.

값에 접근할 때는

* 딕셔너리는 `["키"]`
* 리스트는 `[번호]`\
  를 사용하며, 여러 구조가 섞여 있을 경우 차례대로 이어서 접근해요.

***

### 주의사항

* 키 이름은 정확하게 입력해야 해요.
* 딕셔너리에 없는 키를 사용하면 값을 가져올 수 없어요.
* 리스트는 0부터 번호가 시작해요.

***

### 파이썬 대응 코드

```
리스트_이름 = [
    {"키1": 값1, "키2": 값2},
    {"키1": 값1, "키2": 값2},
    {"키1": 값1, "키2": 값2}
]
```

***

### 예시

{% code title="예시 코드" %}

```
학생 = {
    이름: "하랑이",
    학년: 6,
    취미: ["게임", "독서"],
    보호자: {
        이름: "하랑이 부모님"
        연락처: "010-1234-5678"
    },
    수강과목: [
        {과목명: "수학", 요일: "월요일"},
        {과목명: "과학", 요일: "수요일"}
    ]
}

학생["이름"] 보여주기
학생["취미"][0] 보여주기
학생["보호자"]["연락처"] 보여주기
학생["수강과목"][1]["과목명"] 보여주기
```

{% endcode %}

{% code title="예시 코드의 출력" %}

```
하랑이
게임
010-1234-5678
과학
```

{% endcode %}

***

### 검색 키워드

딕셔너리, 자료형, 키와 값, 데이터 저장, 값 종류, 중첩 딕셔너리, 리스트
