AD JB Toolbox 01

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 복사도 기본적으로 얕은 복사라서 내부 리스트가 있으면 공유될 수 있습니다.

집계 데이터 검증과 변경 실험

  1. food 금액 하나를 3500에서 4500으로 바꿔 food 합계만 12500이 되는지 확인합니다.
  2. Food처럼 대문자로 바꿔 별도 키가 생기는지 확인합니다. 입력을 정규화할지 정책을 정합니다.
  3. books를 필수 분류로 간주한다면 get 기본값으로 숨기지 말고 키 존재 여부를 검사합니다.

키를 추가하거나 삭제하면서 같은 딕셔너리를 순회하면 RuntimeError가 발생할 수 있습니다. 먼저 대상 키를 따로 모으거나 새 딕셔너리로 결과를 만듭니다.

같은 카테고리의 다른 글
Python 강좌 / 가상환경 만들기와 pip로 패키지 관리하기

Python 강좌 / 가상환경 만들기와 pip로 패키지 관리하기

venv로 프로젝트 환경을 분리하고 python -m pip로 패키지를 관리합니다. 활성화, 버전 기록, 재설치와 설치 환경 불일치 해결 기준을 익힙니다.

Python 강좌 / 문자열 다루기: 인덱싱·슬라이싱·메서드·f-string

Python 강좌 / 문자열 다루기: 인덱싱·슬라이싱·메서드·f-string

문자열의 인덱싱·슬라이싱과 strip·split·join·f-string을 익힙니다. 원본이 변경되지 않는 특성과 CSV·SQL 처리에서 구분할 점을 설명합니다.

Python 강좌 / 딕셔너리로 키와 값 관리하기

Python 강좌 / 딕셔너리로 키와 값 관리하기

딕셔너리의 키·값 접근과 항목 갱신을 설명합니다. 분류별 지출 집계 예제로 get·items·정렬과 필수 키 누락 처리의 차이를 확인합니다.

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

Python 강좌 / macOS·Ubuntu에서 Python 실행 환경 준비하기

macOS와 Ubuntu의 Python 설치 경로를 확인하고 개발용 가상환경을 만듭니다. 시스템 Python 보호, 배포판 버전 차이와 설치 오류의 확인 기준을 함께 다룹니다.

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

Python 강좌 / 변수·주석·입력과 출력으로 첫 프로그램 만들기

변수 대입과 주석, input·print의 역할을 익힙니다. 입력 문자열을 금액으로 변환하고 f-string으로 출력하며 잘못된 입력의 원인을 확인합니다.

Python 강좌 / Python이란? 특징과 활용 분야

Python 강좌 / Python이란? 특징과 활용 분야

Python의 역할과 활용 범위를 이해하고 소스 파일·터미널·인터프리터를 구분합니다. 간단한 합산 예제를 실행하며 강좌의 실습 방식을 익힐 수 있습니다.

Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기

Python 강좌 / 리스트 만들고 항목 추가·수정·삭제하기

리스트의 추가·수정·삭제와 정렬을 실행 예제로 확인합니다. sort와 sorted, 얕은 복사, 빈 목록과 반복 중 변경의 차이를 설명합니다.

Python 강좌 / VS Code에서 Python 코드 작성하고 실행하기

Python 강좌 / VS Code에서 Python 코드 작성하고 실행하기

VS Code에서 프로젝트 폴더와 가상환경 인터프리터를 연결합니다. 실행 경로 확인, 간단한 디버깅과 패키지 환경 불일치 해결 방법을 설명합니다.

Python 강좌 / Windows에 Python 설치하고 실행 확인하기

Python 강좌 / Windows에 Python 설치하고 실행 확인하기

공식 Python Install Manager로 Windows 실행 환경을 준비합니다. 기존 설치 확인, 프로젝트용 가상환경 생성, 명령 충돌과 실행 경로 점검까지 설명합니다.

Python 강좌 / 숫자 자료형과 연산: 정수·실수·형 변환

Python 강좌 / 숫자 자료형과 연산: 정수·실수·형 변환

int·float·Decimal의 차이와 나눗셈·형 변환을 설명합니다. 음수와 십진 소수 예제로 금액 계산에서 정확도를 선택하는 방법을 확인합니다.