파이썬 - 중첩된 딕셔너리
안녕하세요, 자신의 코드를 꿈꾸는 분들! 오늘은 파이썬에서 중첩된 딕셔너리의 흥미로운 세계에 빠지러 갈 거예요. 프로그래밍에 새로운 분이라도 걱정하지 마세요 - 저는 여러분을 단계별로 이 토픽을 안내해 드릴 거예요, 마치 저가 수년 동안 수업을 들은 수많은 학생들을 안내한 것처럼요. 그럼, 여러분의 가장 좋아하는 음료를 준비하고 편하게 앉아서, 이 파이썬 모험을 함께 시작해볼까요!
중첩된 딕셔너리
중첩된 딕셔너리는 무엇인가요?
큰 상자(메인 딕셔너리)에 몇 개의 작은 상자(중첩된 딕셔너리)가 들어있는 것을 상상해보세요. 각 작은 상자는 다양한 아이템(ключ-값 쌍)을 포함할 수 있습니다. 이것이 바로 중첩된 딕셔너리의 본질입니다 - 딕셔너리 안에 딕셔너리가 들어 있습니다.
簡単한 예를 들어보겠습니다:
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