파이썬 딕셔너리 완벽 이해와 활용 예시


파이썬의 자료구조인 딕셔너리
안녕하세요, 이번에는 파이썬 딕셔너리에 대해 이해해보고, 활용 예시까지 알아보겠습니다. 파이썬 딕셔너리는 키와 값의 쌍으로 이루어진 자료구조로, 다른 언어에서는 맵, 해시, 해시테이블 등으로 불리기도 합니다. 파이썬 딕셔너리는 중괄호 { }로 표현하며, 키와 값은 콜론 (:)으로 구분하고, 각 쌍은 콤마 (,)로 구분합니다.
1 2 |
grades = {"철수": 87, "영희": 52, "민수": 63} |
이때, grades는 딕셔너리의 이름이고, “철수”, “영희”, “민수”는 키이며, 87, 52, 63은 값입니다. 딕셔너리의 키는 고유해야 하며, 중복된 키를 사용하면 마지막으로 설정한 값으로 덮어씌워집니다. 딕셔너리의 값은 어떤 자료형이든 상관없습니다. 딕셔너리는 순서가 보장되지 않으므로, 인덱스로 접근할 수 없습니다. 대신, 키를 사용하여 값을 조회하거나 수정하거나 삭제할 수 있습니다.
값 조회하기
딕셔너리의 값을 조회하려면 이름 뒤에 대괄호 []를 붙이고, 그 안에 키를 넣어주면 됩니다. 예를 들어, “철수”의 값을 조회하려면 다음과 같이 하면 됩니다.
1 2 |
print(grades["철수"]) # >> 87 |
만약, 딕셔너리에 없는 키를 사용하면 KeyError가 발생합니다. 이를 방지하기 위해서는 get() 메서드를 사용하거나, if문을 활용할 수 있습니다.
get() 메서드는 딕셔너리에서 키에 해당하는 값을 가져오는데, 키가 없으면 None을 반환합니다. 또는 두 번째 인자에 기본값을 지정하여 키가 없을 때 기본 값을 가져오게 할 수 있습니다.
1 2 3 4 |
print(grades.get("철수")) # 출력: 87 print(grades.get("민지")) # 출력: None print(grades.get("민지", 0)) # 출력: 0 |
if key in dict: 문은 딕셔너리에 키가 있는지 확인하는 조건문입니다. 만약 키가 있다면, 참이 되고, 키가 없다면 거짓이 됩니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
1 2 3 4 5 |
if "철수" in grades: print(grades["철수"]) # 출력: 87 else: print("결과 없음") # 출력되지 않음 |
값 수정하기
딕셔너리의 값을 수정하려면, 딕셔너리 이름 뒤에 대괄호 [ ]를 붙이고, 그 안에 키를 넣은 후, 새로운 값을 할당하면 됩니다. 예를 들어, 위의 딕셔너리에서 “철수”의 값을 43으로 수정하려면 다음과 같이 하면 됩니다.
1 2 3 |
grades["철수"] = 43 print(grades) # 출력: {'철수': 43, '영희': 52, '민수': 63} |
값 추가하기
딕셔너리의 값을 추가하려면, 딕셔너리 이름 뒤에 대괄호 [ ]를 붙이고, 그 안에 새로운 키를 넣은 후, 값을 할당하면 됩니다. 예를 들어, “민지”라는 키와 10이라는 값을 추가하려면 다음과 같이 하면 됩니다.
1 2 3 |
grades["민지"] = 10 print(grades) # 출력: {'철수': 87, '영희': 52, '민수': 63, '민지': 10} |
값 삭제하기
딕셔너리의 값을 삭제할땐 del을 사용하거나 pop() 함수를 활용할 수 있습니다.
del을 사용하면 단순히 딕셔너리의 값을 삭제하고, pop() 함수를 사용하면 딕셔너리의 값을 삭제하면서 동시에 삭제하는 값을 반환합니다.
1 2 3 4 5 6 7 |
del grades["민수"] print(grades) # 출력: {'철수': 43, '영희': 52, '민지': 10} removed_value = grades.pop("철수") print(removed_value) # 출력: 43 print(grades) # 출력: {'영희': 52, '민지': 10} |
반복문 활용하기
딕셔너리는 for문을 사용하여 반복할 수 있습니다. 이때, 딕셔너리의 키나 값, 혹은 키와 값의 쌍을 모두 가져올 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
# 키만 가져오기 for key in grades: print(key) # 출력: 영희, 민지 # 값만 가져오기 for value in grades.values(): print(value) # 출력: 52, 10 # 키와 값의 쌍 가져오기 for key, value in grades.items(): print(key, value) # 출력: 영희 52, 민지 10 |
딕셔너리의 반복문을 활용하면, 딕셔너리의 값을 검색하거나 수정하거나 삭제하는 등 다양한 작업을 수행할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 |
# 딕셔너리의 값이 20보다 큰 키만 출력하기 for key, value in grades.items(): if value > 20: print(key) # 출력: 영희 # 딕셔너리의 값에 2를 곱하기 for key in grades: grades[key] *= 2 print(grades) # 출력: {'영희': 104, '민지': 20} |
딕셔너리 정렬
파이썬 딕셔너리는 순서가 보장되지 않는 자료형이지만, sorted() 함수를 사용하여 키나 값에 따라 정렬할 수 있습니다. sorted() 함수는 딕셔너리를 정렬한 후에 키나 값의 리스트를 반환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
grades = {"철수": 87, "영희": 52, "민수": 63, "민지": 10} # 키를 기준으로 오름차순 정렬 sorted_keys = sorted(grades) print(sorted_keys) # 출력: ['민수', '민지', '영희', '철수'] # 키를 기준으로 내림차순 정렬 sorted_keys = sorted(grades, reverse=True) print(sorted_keys) # 출력: ['철수', '영희', '민지', '민수'] # 값을 기준으로 오름차순 정렬 sorted_values = sorted(grades.values()) print(sorted_values) # 출력: [10, 52, 63, 87] # 값을 기준으로 내림차순 정렬 sorted_values = sorted(grades.values(), reverse=True) print(sorted_values) # 출력: [87, 63, 52, 10] # 키와 값의 쌍을 값에 따라 오름차순 정렬 sorted_items = sorted(grades.items(), key=lambda x: x[1]) print(sorted_items) # 출력: [('민지', 10), ('영희', 52), ('민수', 63), ('철수', 87)] # 키와 값의 쌍을 값에 따라 내림차순 정렬 sorted_items = sorted(grades.items(), key=lambda x: x[1], reverse=True) print(sorted_items) # 출력: [('철수', 87), ('민수', 63), ('영희', 52), ('민지', 10)] |
딕셔너리 병합
파이썬 딕셔너리는 update() 메서드나 ** 연산자를 사용하여 다른 딕셔너리와 병합할 수 있습니다. update() 메서드는 원본 딕셔너리를 변경하고, ** 연산자는 새로운 딕셔너리를 반환합니다.
1 2 3 4 5 6 7 8 9 10 11 12 |
grades = {"철수": 87, "영희": 52, "민수": 63} # update() 메서드로 딕셔너리 병합 grades.update({"민지": 10}) print(grades) # 출력: {'철수': 87, '영희': 52, '민수': 63, '민지': 10} # ** 연산자로 딕셔너리 병합 grades = {"철수": 87, "영희": 52, "민수": 63} other_grades = {"민지": 10, "석호": 95, "지연": 75} all_grades = {**grades, **other_grades} print(all_grades) # 출력: {'철수': 87, '영희': 52, '민수': 63, '민지': 10, '석호': 95, '지연': 75} |
파이썬 딕셔너리의 활용 예시
파이썬 딕셔너리는 다음과 같은 다양한 상황 등에서 사용해볼 수 있습니다.
- 학생들의 성적의 평균 점수를 계산하고, 최고 점수를 가진 학생을 찾고 싶을 때
- 사전을 만들고 단어와 뜻을 추가하고 싶을 때
- 주식 종목과 가격을 저장한 뒤 변동률을 계산하고 가장 많이 오른 종목을 찾고 싶을 때
이 외에도 파이썬 딕셔너리는 데이터를 효율적으로 저장하고 처리하는 데 필요한 자료구조입니다. 많이 사용하는 자료구조이니 활용 방법을 잘 익혀두시면 언젠가 많은 도움이 될 것 입니다. 또 다른 강의를 보시려면 여기를 눌러 블로그 메인도 방문해주세요. 감사합니다.