반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 27 |
| 28 | 29 | 30 |
Tags
- ArrayList
- 인텔리제이
- vscode
- input
- html
- junit
- javascript
- 자바
- 테스트자동화
- 배열
- IntelliJ
- Eclipse
- CSS
- 스프링부트
- HashMap
- Java
- js
- list
- 문자열
- Array
- java테스트
- 자바스크립트
- string
- junit5
- math
- Visual Studio Code
- 정규식
- SpringBoot
- 자바문법
- 단위테스트
Archives
- Today
- Total
어제 오늘 내일
[Python 실전] "KeyError는 이제 안녕!" 딕셔너리 안전 삭제 및 병합 가이드 본문
1. 안전하게 삭제하기: 보다는
대부분 del dic["key"]를 먼저 배우지만, 이 방식은 키가 없으면 즉시 에러를 발생시킵니다. 실무에서는 .pop()을 사용하여 기본값을 설정하는 방식을 훨씬 선호합니다.
📌 팁 1: 의 기본값(Default) 활용
키가 없어도 에러를 내지 않고 None이나 지정한 메시지를 반환하게 할 수 있습니다.
user = {"name": "제미니", "level": 10}
# 키가 없어도 에러 없이 안전하게 삭제 시도
# pop(키, 키가 없을 때 반환할 값)
removed_value = user.pop("email", "해당 키가 없습니다")
print(removed_value) # 해당 키가 없습니다.
print(user) # 원본은 그대로 유지됨
📌 팁 2: 조건문을 활용한 삭제
여러 개의 키를 삭제해야 한다면 딕셔너리 컴프리헨션으로 '삭제할 것만 빼고' 새로 만드는 것이 더 안전하고 깔끔합니다.
data = {"a": 1, "b": 2, "c": 3, "d": 4}
remove_keys = {"b", "d"}
# b와 d를 제외한 나머지만 모아서 새 딕셔너리 생성
clean_data = {k: v for k, v in data.items() if k not in remove_keys}
2. 스마트하게 병합하기: 와 연산자
여러 곳에서 수집된 데이터를 하나로 합칠 때, 단순히 덮어쓰는 것이 아니라 효율적으로 병합하는 방법입니다.
📌 팁 3: 파이썬 3.9+ '병합 연산자' 사용하기
최신 파이썬 버전에서는 | 기호 하나로 딕셔너리를 합칠 수 있습니다. 가독성이 매우 좋아집니다.
dict_a = {"apple": 1, "banana": 2}
dict_b = {"banana": 3, "cherry": 4}
# 병합 (뒤에 오는 dict_b의 값이 우선순위를 가집니다)
merged = dict_a | dict_b
print(merged)
# {'apple': 1, 'banana': 3, 'cherry': 4}
📌 팁 4: 원본을 유지하며 합치기 vs 수정하기
.update():dict_a자체를 수정하여 합칩니다.- `{dict_a, dict_b}`: 두 딕셔너리를 해체해서 새로운 딕셔너리를 만듭니다. (구버전 파이썬에서도 작동하는 팁)
3. 중복 키가 걱정될 때:
병합할 때 같은 키가 있으면 값이 덮어씌워지는 게 일반적입니다. 하지만 "기존 값을 유지하면서 새로운 값을 추가"하고 싶다면(예: 한 사람의 여러 취미를 모으는 경우), defaultdict가 정답입니다.
from collections import defaultdict
# 리스트를 기본값으로 가지는 딕셔너리 생성
hobby_map = defaultdict(list)
# 데이터 합치기 시도 (Key 존재 여부를 확인할 필요가 없음!)
data = [("철수", "축구"), ("영희", "독서"), ("철수", "농구")]
for name, hobby in data:
hobby_map[name].append(hobby)
print(dict(hobby_map))
# {'철수': ['축구', '농구'], '영희': ['독서']}
📝 핵심 요약
- 삭제할 때: 키 존재 여부가 불확실하다면
dic.pop("key", None)을 써라. - 병합할 때: 최신 파이썬이라면
dict_a | dict_b가 가장 깔끔하다. - 데이터를 누적할 때:
defaultdict(list)를 쓰면KeyError없이 데이터를 쌓을 수 있다.
반응형
'IT > Python' 카테고리의 다른 글
| [Python 실전] "딕셔너리 고수되는 법" 정렬과 컴프리헨션 완벽 마스터 (0) | 2026.06.03 |
|---|---|
| [Python 기초] 딕셔너리(Dictionary) 완벽 가이드 (0) | 2026.05.26 |
| [Python 기초] "리스트를 하나의 글로!" 파이썬 리스트 문자열 변환 (0) | 2026.05.25 |
| [Python 실전] "가로 세로 싹 다 더해라!" 2차원 리스트 합계와 평균 구하기 (0) | 2026.05.25 |
| [Python 실전] "좌표를 찍어라!" 2차원 리스트 데이터 위치 찾기 (0) | 2026.05.25 |
Comments
