Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 딕셔너리 처리 비용은 얼마나 드나요? 시간 복잡도 완벽 정리

Python 딕셔너리는 이미 충분히 최적화되어 있습니다

Python의 딕셔너리(dict)는 해시 테이블 기반으로 구현되어 있으며, 인터프리터 차원에서 매우 정교하게 최적화된 자료구조입니다. 따라서 일반적인 사용 환경이라면 개발자가 별도로 성능 최적화를 신경 쓸 필요가 거의 없습니다.

주요 연산의 시간 복잡도

  • 생성: N개의 키 또는 키-값 쌍으로 딕셔너리를 만드는 데 O(N)
  • 조회(get): 평균 O(1) — 키를 통해 즉시 값에 접근
  • 삽입/수정(put): 분할 상환(amortized) O(1) — 내부 용량 재할당까지 고려해도 사실상 상수 시간
  • 삭제(del): 평균 O(1)

이러한 성능을 확신할 수 있는 이유 중 하나는, Python 자체가 내부 동작에 딕셔너리를 적극적으로 활용하기 때문입니다. 실제로 객체의 속성은 __dict__라는 딕셔너리에 저장되고, 모듈의 네임스페이스 역시 딕셔너리로 관리됩니다. 언어의 핵심이 이토록 의존하는 만큼, CPython 코어 개발팀은 딕셔너리 성능을 지속적으로 세밀하게 튜닝해 왔습니다. 파이썬 3.6 이후에는 메모리 사용량까지 개선된 압축(compact) 딕셔너리가 도입될 정도입니다.

주의할 점: 자료구조 간 무작정 비교는 금물

다만 리스트(list)/튜플(tuple)딕셔너리(dict)/집합(set)을 단순히 '누가 더 빠른가'로 비교하는 것은 적절하지 않습니다. 두 그룹은 애초에 서로 다른 문제를 해결하기 위해 설계된 자료구조입니다.

  • 리스트 · 튜플: 순서가 있는 데이터 저장과 인덱스 기반 접근, 반복 처리에 적합
  • 딕셔너리 · 집합: 키 기반 빠른 조회, 중복 제거, 멤버십 검사에 적합

즉, 벤치마크 결과만 보고 자료구조를 고르기보다는 "해결하려는 문제에 어떤 자료구조가 적합한가"를 먼저 판단해야 합니다. 문제에 맞는 자료구조를 선택했다면, 대부분의 경우 딕셔너리의 성능은 충분히 믿을 만하며 추가적인 수동 최적화는 불필요합니다.