40대 비전공자 직장인의 파이썬 독학기 3편: 엑셀 행·열과 비교하는 리스트(List)와 딕셔너리(Dictionary) 기초

2편에서는 단일 셀(A1)에 값 하나를 집어넣는 ‘변수’와 ‘자료형’을 배웠습니다.

하지만 실무에서 우리가 다루는 엑셀 파일은 결코 셀 하나짜리 데이터가 아닙니다. 수백, 수천 줄의 품목 리스트와 고객 정보가 담긴 거대한 표(Table)를 다룹니다.

만약 직원 100명의 이름을 변수로 다룬다면 name1, name2, name3 … 처럼 변수 100개를 일일이 만들어야 할까요? 당연히 아닙니다.

파이썬에서는 여러 개의 데이터를 한 묶음으로 깔끔하게 관리하는 ‘리스트(List)’와 ‘딕셔너리(Dictionary)’라는 강력한 데이터 구조를 제공합니다. 이번에도 엑셀의 ‘열(Column)’과 ‘행(Row)’ 개념에 빗대어 명쾌하게 정리해 드리겠습니다.

1. 리스트(List): 순서가 있는 엑셀의 ‘한 줄 열(Column) 데이터’

엑셀의 A열에 상반기 판매 품목들을 위에서부터 아래로 순서대로 적어 내려가는 모습을 떠올려 보세요.

파이썬의 리스트는 대괄호([ ]) 안에 쉼표(,)로 값들을 나열하여 만듭니다.

Python

# 엑셀 A열에 들어간 품목 목록과 같습니다.
item_list = ["노트북", "모니터", "마우스", "키보드"]

print(item_list)
# 출력: ['노트북', '모니터', '마우스', '키보드']

📌 핵심 포인트: 0부터 시작하는 인덱스(Index)

엑셀은 1행부터 번호가 매겨지지만, 파이썬은 무조건 0번부터 순서를 셉니다.

  • item_list[0] ➔ 첫 번째 값인 "노트북"
  • item_list[2] ➔ 세 번째 값인 "마우스"
  • item_list[-1] ➔ 맨 마지막 값인 "키보드" (뒤에서 첫 번째)

2. 딕셔너리(Dictionary): 제목과 내용이 짝을 이루는 ‘엑셀 1개 행(Row)’

엑셀 표에서 2행 한 줄을 보면 [품목명: 노트북 | 단가: 1200000 | 재고: 15 | 부서: IT지원팀]처럼 각 열의 머리글(Header)에 맞춘 상세 정보가 들어갑니다.

파이썬의 딕셔너리Key(머리글 이름): Value(실제 값) 형태로 중괄호({ }) 안에 짝을 지어 데이터를 저장합니다.

Python

# 엑셀 표의 1개 행(Row) 레코드와 같습니다.
product_info = {
    "item": "노트북",
    "price": 1200000,
    "stock": 15,
    "department": "IT지원팀"
}

# 데이터를 꺼낼 때는 번호가 아니라 '머리글(Key)' 이름을 부릅니다.
print(product_info["item"])   # 출력: 노트북
print(product_info["price"])  # 출력: 1200000

3. 리스트 vs 딕셔너리 한눈에 비교하기

구분파이썬 리스트 (List)파이썬 딕셔너리 (Dictionary)
기호대괄호 [ ]중괄호 { Key: Value }
엑셀 비유A열 하나에 쭉 적은 품목 리스트1개 행에 담긴 상세 속성 정보
데이터 접근순번(Index)으로 접근: list[0]이름표(Key)로 접근: dict["price"]
주요 용도순서가 중요한 데이터 나열, 대량 목록의미가 명확해야 하는 속성 데이터 묶음

4. 실전 종합: 엑셀 표(Table) 전체를 파이썬으로 표현하기

실무에서는 리스트와 딕셔너리를 따로 쓰지 않고 함께 엮어서 씁니다. 바로 ‘리스트 안에 딕셔너리를 넣는 형태(List of Dictionaries)’입니다.

이 구조가 바로 엑셀 시트 전체를 코드로 옮겨놓은 형태입니다.

Python

# 엑셀 '재고 관리 표' 전체를 코드로 구성
inventory_table = [
    {"item": "노트북", "price": 1200000, "stock": 5},
    {"item": "모니터", "price": 300000, "stock": 12},
    {"item": "마우스", "price": 35000, "stock": 50}
]

# 1. 첫 번째 행(노트북)의 재고 꺼내기
print(f"첫 번째 품목 재고: {inventory_table[0]['stock']}개")  # 출력: 5개

# 2. 두 번째 행(모니터)의 품목명과 단가 꺼내기
second_item = inventory_table[1]
print(f"품목: {second_item['item']}, 가격: {second_item['price']:,}원")

나중에 배우게 될 판다스(Pandas) 라이브러리를 활용한 엑셀 자동화나 웹 크롤링 데이터 수집도 모두 위와 같은 원리로 동작합니다.

40대 직장인을 위한 실무 요약

  • 리스트([ ]): 순서대로 나열된 데이터 묶음 (0번부터 번호를 매겨 접근)
  • 딕셔너리({ }): 제목과 내용이 짝지어진 레코드 (Key: Value)
  • 복합 구조: 리스트 안에 딕셔너리를 담으면 완벽한 엑셀 시트(데이터베이스) 형태 완성

이제 대량의 데이터를 그릇에 담는 방법까지 모두 마스터하셨습니다.

자주 묻는 질문 (FAQ)

Q1. 리스트에 새로운 항목을 추가하거나 삭제하려면 어떻게 하나요?

  • A. 항목 추가는 .append() 함수를 사용하고, 삭제는 .remove() 함수를 사용합니다.예: item_list.append("웹캠")을 실행하면 리스트 맨 끝에 “웹캠”이 추가됩니다.

Q2. 딕셔너리에서 존재하지 않는 Key를 호출하면 어떻게 되나요?

  • A. product_info["color"]처럼 없는 키를 호출하면 KeyError가 발생하며 프로그램이 멈춥니다. 이를 방지하려면 product_info.get("color", "없음") 형태로 .get() 메서드를 사용하는 것이 안전합니다.

Q3. 엑셀 파일(.xlsx)을 파이썬으로 불러오면 실제로 이런 형태로 저장되나요?

  • A. 네, 맞습니다. 파이썬의 대표적인 엑셀 처리 라이브러리인 openpyxl이나 pandas로 엑셀 파일을 읽어오면 내부적으로 각 행과 열이 딕셔너리와 리스트 구조로 변환되어 처리됩니다.

▶ Next Step · 파이썬 독학기 4편

수백 개 데이터를 1초 만에 자동 분류하는 업무 자동화의 핵심 문법!

👉 4편: 엑셀 IF 함수와 필터를 대체하는 조건문(if)과 반복문(for) 기초 보러가기 →

댓글 남기기