본문 바로가기
개발&프로그래밍

[python] 리스트와 딕셔너리 완벽 이해하기

by 재아군 2024. 11. 20.

[Python] 리스트와 딕셔너리 완벽 이해하기

 

Python에서 가장 많이 사용되는 데이터 구조인 리스트와 딕셔너리의 기본부터 실전 활용법까지 알아보자.

 

 

 

리스트 기본 연산

리스트 생성과 접근

# 리스트 생성
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]

# 인덱싱
first = numbers[0]      # 첫 번째 요소
last = numbers[-1]      # 마지막 요소

# 슬라이싱
subset = numbers[1:4]   # [2, 3, 4]
reversed_list = numbers[::-1]  # [5, 4, 3, 2, 1]

 

리스트 수정

# 요소 추가
numbers.append(6)       # [1, 2, 3, 4, 5, 6]
numbers.insert(0, 0)    # [0, 1, 2, 3, 4, 5, 6]

# 요소 삭제
numbers.remove(3)       # 값 3을 삭제
del numbers[0]         # 첫 번째 요소 삭제
popped = numbers.pop()  # 마지막 요소 삭제 후 반환

# 리스트 연결
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2  # [1, 2, 3, 4, 5, 6]

 

딕셔너리 활용법

딕셔너리 기본

# 딕셔너리 생성
student = {
    'name': 'John',
    'age': 20,
    'grades': [90, 85, 88]
}

# 값 접근
name = student['name']
age = student.get('age')  # 안전한 접근 방법

# 값 수정/추가
student['age'] = 21
student['email'] = 'john@example.com'

# 값 삭제
del student['grades']
email = student.pop('email')

 

딕셔너리 고급 기능

# 키, 값, 아이템 순회
for key in student.keys():
    print(key)

for value in student.values():
    print(value)

for key, value in student.items():
    print(f"{key}: {value}")

# 기본값 설정
grades = student.setdefault('grades', [])  # 키가 없으면 빈 리스트 생성

# 딕셔너리 병합
defaults = {'age': 18, 'grade': 'A'}
student.update(defaults)  # 기존 값 유지, 없는 키만 추가

 

리스트 컴프리헨션

기본 문법

# 기본 형태
squares = [x**2 for x in range(10)]  # 0부터 9까지의 제곱수

# 조건 추가
even_squares = [x**2 for x in range(10) if x % 2 == 0]

# 중첩 반복문
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4]]

 

 

실전 예제

# 문자열 처리
words = ['hello', 'world', 'python']
lengths = [len(word) for word in words]

# 조건부 값 변경
numbers = [1, -2, 3, -4, 5]
absolute = [num if num >= 0 else -num for num in numbers]

# 중첩 리스트 평탄화
matrix = [[1, 2, 3], [4, 5, 6]]
flattened = [num for row in matrix for num in row]

 

자주 쓰는 메서드

리스트 메서드

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]

# 정렬
numbers.sort()              # 오름차순 정렬
numbers.sort(reverse=True)  # 내림차순 정렬

# 카운트와 인덱스
count = numbers.count(5)    # 값 5의 개수
index = numbers.index(4)    # 값 4의 첫 번째 위치

# 리스트 조작
numbers.extend([7, 8, 9])   # 여러 요소 추가
numbers.clear()             # 모든 요소 삭제

 

딕셔너리 메서드

info = {'name': 'Alice', 'age': 25}

# 안전한 값 가져오기
name = info.get('name', 'Unknown')  # 기본값 설정
age = info.get('age', 0)

# 딕셔너리 복사
info_copy = info.copy()     # 얕은 복사
deep_copy = copy.deepcopy(info)  # 깊은 복사

# 모든 키-값 쌍 삭제
info.clear()

 

 

실전 활용 예제

빈도수 계산

# 단어 빈도수 계산
text = "hello world hello python world"
word_count = {}

for word in text.split():
    word_count[word] = word_count.get(word, 0) + 1

print(word_count)  # {'hello': 2, 'world': 2, 'python': 1}

 

데이터 그룹화

# 학생 성적 그룹화
grades = [
    {'name': 'John', 'grade': 'A'},
    {'name': 'Jane', 'grade': 'B'},
    {'name': 'Bob', 'grade': 'A'}
]

by_grade = {}
for student in grades:
    grade = student['grade']
    by_grade.setdefault(grade, []).append(student['name'])

print(by_grade)  # {'A': ['John', 'Bob'], 'B': ['Jane']}

 

댓글