파이썬으로 코딩을 시작하면 데이터를 저장하기 위해 가장 먼저 리스트(List)를 배우게 됩니다. 예를 들어 user = ["Alice", 29, "Seoul"]처럼 데이터를 묶어두는 것이죠. 그런데 코드가 조금만 길어지고 시간이 지나면 어떨까요? 두 번째 값인 29가 사용자의 나이인지, 회원 번호인지, 혹은 장바구니에 담은 상품 개수인지 헷갈리게 됩니다. 또한, 수만 개의 데이터 속에서 "Alice"라는 특정 회원의 정보를 찾기 위해 반복문으로 데이터를 처음부터 끝까지 다 뒤져본 경험, 혹시 있으신가요?
만약 이런 고민을 한 번이라도 해보셨다면, 값들이 각각 무엇을 뜻하는지 명확히 하고 검색 속도까지 비약적으로 높여주는 '파이썬 딕셔너리(Dictionary)'를 마스터해야 할 때입니다.
--------------------------------------------------------------------------------
1. 파이썬 딕셔너리(Dictionary)란? 순서가 아닌 '이름'으로 찾는다!
딕셔너리는 리스트처럼 값들을 단순히 나열하는 것이 아니라, 각 데이터에 **'이름표'**를 붙여 관리하는 자료구조입니다. 데이터를 Key(키)와 Value(값)의 쌍으로 묶어 저장하는 방식(Key-Value 구조)을 취합니다.
우리가 영한사전에서 특정 영어 단어(Key)를 검색해 그 뜻(Value)을 찾는 것과 완전히 동일한 원리입니다. 예를 들어 리스트 대신 딕셔너리를 사용하면 코드가 이렇게 바뀝니다. user = {"name": "Alice", "age": 29, "city": "Seoul"}
인덱스 번호 ``, 을 외울 필요 없이, `user["name"]`처럼 직관적으로 원하는 데이터를 쏙쏙 뽑아올 수 있게 됩니다. 몇 번째 값인지보다 '무슨 값'인지가 중요할 때 가장 적합한 도구입니다.
--------------------------------------------------------------------------------
2. 리스트(List) vs 딕셔너리(Dict), 나의 선택 기준은?
개발을 하다 보면 언제 리스트를 쓰고, 언제 딕셔너리를 써야 할지 고민될 때가 많습니다. 선택 기준은 명확합니다.
- 리스트(List) : 데이터의 '순서'가 중요하거나, 나열된 값들을 하나씩 순차적으로 처리해야 할 때 적합합니다. 하지만 특정 값을 검색하려면 처음부터 끝까지 찾아야 하므로 시간 복잡도가 O(n)이 걸립니다.
- 딕셔너리(Dictionary) : 데이터의 '항목 이름과 의미'가 중요할 때 적합합니다. 딕셔너리는 내부적으로 해시 테이블(Hash Table) 기반으로 구현되어 있기 때문에, 데이터가 10만 개든 100만 개든 Key를 통한 검색과 접근 속도가 O(1)로 매우 빠릅니다.
--------------------------------------------------------------------------------
3. 실무에서 딕셔너리가 필수적인 이유 (feat. JSON)
실무에서 다루는 데이터는 회원 정보(이름, 이메일, 가입일), 상품 정보(상품명, 가격, 재고)처럼 한 개체에 여러 속성이 묶여 있는 경우가 대부분입니다. 이러한 '속성 묶음'을 다룰 때 딕셔너리가 가장 자연스럽습니다.
특히 웹 개발이나 데이터 분석 실무에서 딕셔너리가 중요한 이유는 JSON(JavaScript Object Notation) 때문입니다. 웹 서비스 간에 데이터를 주고받는 REST API는 대부분 JSON 형식을 사용하는데, 이 JSON의 구조가 파이썬의 딕셔너리와 매우 유사합니다.
외부에서 가져온 JSON 데이터를 파이썬의 json.loads() 함수를 이용해 딕셔너리로 변환하면, 파이썬 코드 내에서 직관적이고 빠르게 데이터를 파싱하고 가공할 수 있습니다. 즉, 딕셔너리를 이해하면 외부 API 데이터를 다루는 실무 감각이 크게 향상됩니다.
--------------------------------------------------------------------------------
4. 초보자가 딕셔너리를 쓸 때 꼭 주의해야 할 점
파이썬 딕셔너리를 오류 없이 완벽하게 활용하기 위한 필수 주의점입니다.
- 인덱스 번호로 접근하지 마세요 : 리스트에 익숙한 나머지 user처럼 접근하려다 KeyError를 마주하는 경우가 많습니다. 딕셔너리는 반드시 지정된 Key 이름으로 접근해야 합니다.
- Key는 중복될 수 없습니다 : 같은 Key에 다른 값을 다시 할당하면, 기존 값은 사라지고 가장 마지막에 입력한 값으로 덮어씌워집니다.
- Key에는 불변형(Immutable) 자료만 : Key로는 문자열, 숫자, 튜플 등 해시화가 가능한(Hashable) 데이터만 쓸 수 있습니다. 내용이 변할 수 있는 리스트(List)나 셋(Set)은 Key로 사용할 수 없습니다.
- 안전한 데이터 접근은 .get() 메서드로 : 딕셔너리에 존재하지 않는 Key를 user["phone"]처럼 대괄호로 바로 부르면 에러가 발생해 프로그램이 멈춥니다. 대신 user.get("phone", "번호 없음")처럼 .get() 메서드를 사용하면, Key가 없을 때 에러 대신 설정한 기본값을 반환하여 훨씬 안정적인 코드를 작성할 수 있습니다. 복잡하게 중첩된 딕셔너리에서 데이터를 찾을 때 .get()을 체인처럼 연결해 쓰는 것이 실무의 핵심 팁입니다.
--------------------------------------------------------------------------------
💡 마무리하며
파이썬 딕셔너리(Dictionary)는 단순히 파이썬 기초 문법 중 하나가 아니라, 실무 데이터 구조를 이해하는 첫 관문입니다. 리스트에서 '데이터의 순서'를 배웠다면, 이제 딕셔너리를 통해 데이터에 '의미'를 부여해 보세요. 코드를 작성하는 사람도, 나중에 코드를 읽는 사람도 훨씬 쉽게 데이터를 이해할 수 있습니다.
딕셔너리의 Key-Value 구조에 완벽히 적응하셨다면, 다음 학습으로는 딕셔너리와 비슷하지만 '중복 제거'와 '포함 여부 확인'에 특화된 자료형인 집합(Set) 구조를 함께 공부해보시기를 추천해 드립니다!

반응형