파이썬 - 중첩된 딕셔너리

안녕하세요, 자신의 코드를 꿈꾸는 분들! 오늘은 파이썬에서 중첩된 딕셔너리의 흥미로운 세계에 빠지러 갈 거예요. 프로그래밍에 새로운 분이라도 걱정하지 마세요 - 저는 여러분을 단계별로 이 토픽을 안내해 드릴 거예요, 마치 저가 수년 동안 수업을 들은 수많은 학생들을 안내한 것처럼요. 그럼, 여러분의 가장 좋아하는 음료를 준비하고 편하게 앉아서, 이 파이썬 모험을 함께 시작해볼까요!

Python - Nested Dictionaries

중첩된 딕셔너리

중첩된 딕셔너리는 무엇인가요?

큰 상자(메인 딕셔너리)에 몇 개의 작은 상자(중첩된 딕셔너리)가 들어있는 것을 상상해보세요. 각 작은 상자는 다양한 아이템(ключ-값 쌍)을 포함할 수 있습니다. 이것이 바로 중첩된 딕셔너리의 본질입니다 - 딕셔너리 안에 딕셔너리가 들어 있습니다.

簡単한 예를 들어보겠습니다:

student = {
"name": "Alice",
"age": 20,
"grades": {
"math": 95,
"science": 88,
"history": 92
}
}

이 예제에서, student는 우리의 메인 딕셔너리입니다. Alice에 대한 기본 정보를 포함하고 있으며, 중첩된 딕셔너리 grades를 포함하여 그녀의 다른 과목에서의 점수를 보관하고 있습니다.

파이썬에서 중첩된 딕셔너리 생성

중첩된 딕셔너리를 생성하는 것은 정상적인 딕셔너리를 생성하는 것과 비슷하지만, 단서는 딕셔너리를 값으로 추가하는 것입니다. 더 복잡한 예제를 만들어보겠습니다 - 학교 디렉토리:

school = {
"Grade 9": {
"Alice": {
"age": 14,
"subjects": ["Math", "Science", "English"]
},
"Bob": {
"age": 15,
"subjects": ["History", "Art", "PE"]
}
},
"Grade 10": {
"Charlie": {
"age": 16,
"subjects": ["Physics", "Chemistry", "Biology"]
}
}
}

여기서, 우리는 메인 딕셔너리 school을 가지고 있으며, 이는 학년 수준을 키로 포함합니다. 각 학년 수준은 학생 이름을 키로 가지는 딕셔너리를 포함합니다. 각 학생은 자신의 개인 정보를 포함하는 딕셔너리를 가집니다.

파이썬에서 중첩된 딕셔너리에 항목 추가

중첩된 딕셔너리에 항목을 추가하는 것은 간단합니다. 기존 중첩된 딕셔너리에 새로운 키-값 쌍을 추가하거나, 새로운 중첩된 딕셔너리를 만들 수 있습니다.

Grade 10에 새로운 학생을 추가해보겠습니다:

school["Grade 10"]["Diana"] = {
"age": 15,
"subjects": ["Math", "Computer Science", "Literature"]
}

print(school["Grade 10"])

출력:

{
'Charlie': {'age': 16, 'subjects': ['Physics', 'Chemistry', 'Biology']},
'Diana': {'age': 15, 'subjects': ['Math', 'Computer Science', 'Literature']}
}

새로운 학년 수준을 추가할 수도 있습니다:

school["Grade 11"] = {
"Eve": {
"age": 17,
"subjects": ["Economics", "Psychology", "French"]
}
}

print(school.keys())

출력:

dict_keys(['Grade 9', 'Grade 10', 'Grade 11'])

파이썬에서 중첩된 딕셔너리의 항목 접근

중첩된 딕셔너리의 항목에 접근하려면, 중첩된 레벨에 따라 여러 개의 꺾쇠괄호를 사용합니다. school 딕셔너리에서 몇 가지 정보를 꺼내보겠습니다:

# Alice의 나이를 가져오기
alice_age = school["Grade 9"]["Alice"]["age"]
print(f"Alice의 나이: {alice_age}")

# Charlie의 과목을 가져오기
charlie_subjects = school["Grade 10"]["Charlie"]["subjects"]
print(f"Charlie의 과목: {charlie_subjects}")

출력:

Alice의 나이: 14
Charlie의 과목: ['Physics', 'Chemistry', 'Biology']

기억하세요, 여러분의 중첩된 딕셔너리의 구조를 확실하지 않다면, KeyError 예외를 피하기 위해 get() 메서드를 사용할 수 있습니다:

# 존재하지 않는 학생을 시도하기
frank_age = school.get("Grade 9", {}).get("Frank", {}).get("age", "Not found")
print(f"Frank의 나이: {frank_age}")

출력:

Frank의 나이: Not found

중첩된 딕셔너리에서 딕셔너리 삭제

중첩된 딕셔너리를 제거하려면 del 키워드를 사용합니다. Grade 9의 Bob를 제거해보겠습니다:

del school["Grade 9"]["Bob"]
print(school["Grade 9"])

출력:

{'Alice': {'age': 14, 'subjects': ['Math', 'Science', 'English']}}

중첩된 딕셔너리에서 항목을 삭제할 때는 주의하세요. 항상 키가 존재하는지 확인하여 KeyError 예외를 피하세요.

파이썬에서 중첩된 딕셔너리를 반복

중첩된 딕셔너리를 반복하려면 중첩된 루프가 필요합니다. school 딕셔너리의 모든 정보를 출력해보겠습니다:

for grade, students in school.items():
print(f"\n{grade}:")
for student, info in students.items():
print(f"  {student}:")
for key, value in info.items():
print(f"    {key}: {value}")

출력:

Grade 9:
Alice:
age: 14
subjects: ['Math', 'Science', 'English']

Grade 10:
Charlie:
age: 16
subjects: ['Physics', 'Chemistry', 'Biology']
Diana:
age: 15
subjects: ['Math', 'Computer Science', 'Literature']

Grade 11:
Eve:
age: 17
subjects: ['Economics', 'Psychology', 'French']

이 중첩된 루프 구조는 우리가 중첩된 딕셔너리의 모든 레벨에 접근하고 출력할 수 있게 합니다.

중첩된 딕셔너리 작업을 위한 메서드

다음은 중첩된 딕셔너리 작업에 유용한 메서드들의 표입니다:

메서드 설명
dict.items() 딕셔너리의 키-값 쌍을 포함하는 뷰 객체를 반환합니다
dict.keys() 딕셔너리의 키를 포함하는 뷰 객체를 반환합니다
dict.values() 딕셔너리의 값을 포함하는 뷰 객체를 반환합니다
dict.get(key, default) 지정된 키가 존재하면 해당 키의 값을 반환하고, 그렇지 않으면 기본 값을 반환합니다
dict.update(other_dict) 다른 딕셔너리나 키-값 쌍이 있는 이터러블로 딕셔너리를 업데이트합니다
dict.pop(key, default) 지정된 키를 제거하고 해당 값을 반환합니다. 키가 존재하지 않으면 기본 값을 반환합니다

기억하세요, 이 메서드들은 중첩된 딕셔너리의 모든 레벨에서 적용할 수 있습니다.

그리고 여기 있습니다, 제亲爱한 학생들! 우리는 파이썬에서 중첩된 딕셔너리의 모든 것을 탐험했습니다. 생성하고 항목을 추가하고, 접근하고, 삭제하고, 반복하는 등이 있었습니다. 이제 여러분은 이러한 복잡한 데이터 구조를 작업할 수 있는 도구를 가지고 있습니다.

모든 프로그래밍 개념과 마찬가지로, 연습은 키입니다. 여러분만의 중첩된 딕셔너리를 만들어보세요, 아마도 디지털 도서관 카탈로그나 요리책 같은 것이죠. 이러한 구조를 더 많이 써보면 더 편안해질 거예요.

기억하세요, 프로그래밍의 세상에서는 실수는 단지 배우는 기회를 의미합니다. 그래서 실험하고 실수를 만들지 마세요 - 그게 우리가 모두 코더로서 성장하는 방법이랍니다. 계속 코딩하고, 계속 배우며, 가장 중요한 것은 파이썬과 함께 즐기세요!

Credits: Image by storyset