지난 편에서 변수와 단일 값 자료형(int, str 등)을 다뤘으니, 이번엔 여러 개의 값을 한 번에 담는 방법인 리스트(list)와 딕셔너리(dict)를 정리한다.
![[파이썬 03] 리스트와 딕셔너리](https://img.thenullpage.com/posts/5082/5082_1_ff64f9.webp)
![[파이썬 03] 리스트와 딕셔너리 (2)](https://img.thenullpage.com/posts/5082/5082_2_5cb888.webp)
1. 리스트는 순서가 있는 데이터 묶음
리스트는 여러 값을 순서대로 저장하는 자료형이다. 각 항목은 고유한 위치(인덱스)를 가지며, 대괄호 [ ]로 정의하고 값 사이는 쉼표로 구분한다.
fruits = ["사과", "바나나", "포도"]
print(fruits[0]) # 사과
리스트의 특징은 순서를 유지한다는 점과, 값을 자유롭게 추가/수정/삭제할 수 있다는 점이다. 순서가 중요한 데이터(할 일 목록, 순차적인 단계 등)를 다룰 때 적합하다.
2. 딕셔너리, 이름표(키)로 찾는 데이터 묶음
딕셔너리는 값을 키(key)-값(value) 쌍으로 저장하는 자료형이다. 중괄호 { }로 정의하고, 키와 값은 콜론(:)으로 구분한다.
user = {"이름": "철수", "나이": 25}
print(user["이름"]) # 철수
리스트와 달리 딕셔너리는 위치가 아니라 키로 값에 접근한다. 각 키는 고유해야 하며, 딕셔너리는 이런 특성 덕분에 이름이 붙은 데이터(사용자 정보, 설정값 등)를 다루기에 적합하다.
3. 언제 뭘 써야 하나
핵심 구분 기준은 "순서가 중요한가, 이름(키)으로 찾는 게 중요한가"다. 데이터가 순차적인 흐름을 갖는다면 리스트가 맞고, 각 값이 고유한 이름표를 가지고 있어서 그 이름으로 바로 찾아야 한다면 딕셔너리가 맞다.
실무에서 자주 언급되는 예로는, 데이터베이스의 한 행(레코드)을 표현할 때 각 열(컬럼)과 값을 딕셔너리로 대응시키는 방식이 흔히 쓰인다.
성능 측면에서도 차이가 있다. 딕셔너리는 해시(hash) 기반 구조로 되어 있어서 특정 키로 값을 찾는 속도가 리스트에서 특정 값을 찾는 것보다 훨씬 빠르다.
반면 리스트는 순서를 유지해야 하는 데이터, 혹은 나중에 값이 자주 바뀔 수 있는 데이터를 다룰 때 더 적합하다는 의견이 일반적이다.
4. 같이 쓰기도 함, 리스트 안에 딕셔너리
실무 코드에서는 이 둘을 따로 쓰기보다 조합해서 쓰는 경우가 많다. 예를 들어 여러 사용자 정보를 다룰 때는 리스트 안에 딕셔너리 여러 개를 넣는 구조를 흔히 쓴다.
users = [
{"이름": "철수", "나이": 25},
{"이름": "영희", "나이": 23}
]
print(users[0]["이름"]) # 철수
이 구조는 엑셀의 표(각 행이 하나의 딕셔너리, 전체가 리스트)와 비슷한 형태라서, 다음에 다룰 엑셀 자동화나 크롤링 편에서 실제로 이 패턴을 계속 쓰게 된다.
정리
리스트는 순서 있는 데이터를 다룰 때, 딕셔너리는 이름(키)으로 값을 빠르게 찾아야 할 때 쓴다.
그리고 실무에서는 이 둘을 섞어서 "리스트 안에 딕셔너리"라는 구조를 정말 많이 쓰게 된다.