Python 강좌 / 딕셔너리로 키와 값 관리하기
딕셔너리는 키를 사용해 값을 찾는 자료형입니다. 필드 이름으로 기록을 표현하거나 분류별 합계를 만들 때 유용하며, 없는 키를 오류로 처리할지 기본값으로 처리할지 정해야 합니다.
키·값과 중복 키의 규칙
딕셔너리는 중괄호 안에 키: 값 쌍을 적습니다. 같은 키에 다시 대입하면 새 항목이 늘어나는 대신 값이 교체됩니다. 키는 해시 가능한 값이어야 하므로 문자열이나 정수는 보통 사용할 수 있지만 리스트는 사용할 수 없습니다. 문자열 키는 대소문자와 앞뒤 공백을 구분합니다.
관련 동작과 지원 조건은 딕셔너리로 키와 값 관리하기 관련 공식 문서에서 확인할 수 있습니다.
expense = {"name": "lunch", "amount": 8000}
expense["amount"] = 9000
print(expense["amount"])
삽입 순서는 유지되지만 금액순·이름순으로 자동 정렬되는 것은 아닙니다. 정렬된 결과가 필요하면 기준을 명시합니다.
전체 예제와 실행 결과
별도의 실습 폴더에서 아래 파일을 UTF-8로 저장합니다. 가상환경을 선택한 터미널에서 python dicts.py 명령으로 실행합니다. macOS·Ubuntu에서 가상환경을 사용하지 않는 경우 명령 이름을 python3으로 바꿉니다.
dicts.py 파일의 전체 내용입니다.
expenses = [("food", 8000), ("transport", 2500), ("food", 3500)]
totals = {}
for category, amount in expenses:
totals[category] = totals.get(category, 0) + amount
for category, total in sorted(totals.items()):
print(category, total)
print(totals.get("books", 0))
예상 결과는 다음과 같습니다.
food 11500 transport 2500 0
대괄호 접근과 get 구분하기
totals["books"]는 키가 없으면 KeyError를 발생시킵니다. get("books", 0)은 없을 때 0을 반환하고 실제 딕셔너리에 books를 추가하지는 않습니다. 필수 필드가 빠진 데이터를 0으로 조용히 바꾸면 오류를 숨길 수 있으므로 필수 여부를 먼저 판단합니다.
for key in totals는 키를 반복합니다. 값만 필요하면 values(), 키와 값 모두 필요하면 items()를 사용합니다. dict 복사도 기본적으로 얕은 복사라서 내부 리스트가 있으면 공유될 수 있습니다.
집계 데이터 검증과 변경 실험
- food 금액 하나를 3500에서 4500으로 바꿔 food 합계만 12500이 되는지 확인합니다.
- Food처럼 대문자로 바꿔 별도 키가 생기는지 확인합니다. 입력을 정규화할지 정책을 정합니다.
- books를 필수 분류로 간주한다면 get 기본값으로 숨기지 말고 키 존재 여부를 검사합니다.
키를 추가하거나 삭제하면서 같은 딕셔너리를 순회하면 RuntimeError가 발생할 수 있습니다. 먼저 대상 키를 따로 모으거나 새 딕셔너리로 결과를 만듭니다.










