1. 딕셔너리(dict) 주요 메서드
딕셔너리는 키(Key)와 값(Value)의 쌍으로 이루어진 변경 가능한(Mutable) 자료형입니다.
1.1 타입 변환
dict() 생성자를 사용하여 다른 자료형을 딕셔너리로 변환할 수 있으나, 일반적으로는 중괄호 {}를 이용해 직접 생성하는 방식이 주로 사용됩니다.
1.2 데이터 조회 및 관리
- 조회 (Indexing vs get): 대괄호를 사용하면 존재하지 않는 키를 조회할 때 에러가 발생하지만,
get()메서드는None을 반환하여 안전합니다. - 수정 및 추가: 특정 키에 값을 할당하면 기존 데이터가 수정되거나, 키가 없을 경우 새로 추가됩니다.
- 삭제:
del키워드나pop()메서드를 사용합니다.
# 딕셔너리 조작 예시
student_info = {"name": "Alice", "score": 95, "major": "CS"}
# get()을 이용한 안전한 조회
print(student_info.get("age")) # None 반환 (에러 발생 안 함)
# 데이터 추가 및 수정
student_info["age"] = 22 # 추가
student_info["score"] = 98 # 수정
# 데이터 삭제
removed_value = student_info.pop("major") # 'major' 삭제 및 값 반환
1.3 딕셔너리 필수 메서드
keys(): 모든 키를 반환합니다.values(): 모든 값을 반환합니다.items(): 모든 키-값 쌍을 튜플 형태로 반환합니다.len(): 딕셔너리의 요소 개수를 확인합니다.fromkeys(): 여러 개의 키를 동일한 초깃값으로 설정하여 딕셔너리를 생성합니다.
# key-value 일괄 추출
print(student_info.keys())
print(student_info.items())
# 초기화 예시
default_data = dict.fromkeys(['status', 'flag', 'mode'], 0)
# 결과: {'status': 0, 'flag': 0, 'mode': 0}
2. 튜플(tuple) 주요 메서드
튜플은 리스트와 유사하지만, 내부 데이터를 변경할 수 없는(Immutable) 특징을 가집니다.
2.1 인덱싱과 슬라이싱
튜플은 순서가 있는 시퀀스 타입이므로 인덱스를 통한 접근이 가능합니다.
# 튜플 활용
coordinates = (10, 20, 30, 40, 50)
# 인덱싱 및 슬라이싱
print(coordinates[1]) # 20
print(coordinates[0:3]) # (10, 20, 30)
print(coordinates[::2]) # (10, 30, 50) - 2칸 간격
2.2 튜플 관련 함수
count(): 특정 데이터의 등장 횟수를 확인합니다.index(): 특정 데이터의 인덱스 위치를 찾습니다.len(): 튜플의 전체 요소 개수를 반환합니다.
※ 주의사항: 요소가 하나인 튜플을 생성할 때는 반드시 뒤에 쉼표를 붙여야 합니다. (10,)
3. 집합(set) 주요 메서드
집합은 중복을 허용하지 않으며 요소의 순서가 보장되지 않습니다.
3.1 주요 특징 및 중복 제거
리스트 등에서 중복된 데이터를 제거할 때 set()으로 변환하는 방식이 효과적입니다.
# 중복 제거 예시
raw_list = [1, 2, 2, 3, 4, 4, 4, 5]
unique_set = set(raw_list)
print(unique_set) # {1, 2, 3, 4, 5}
3.2 집합 연산
&(교집합): 두 집합에 공통으로 포함된 요소.-(차집합): 한 집합에만 포함된 요소.|(합집합): 두 집합의 모든 요소를 병합 (중복 제외).^(대칭 차집합): 교집합을 제외한 나머지 요소들.
4. 문자 인코딩(Character Encoding)의 이해
컴퓨터는 이진수(0과 1)만 이해할 수 있으므로, 문자를 숫자로 변환하는 규칙인 '인코딩'이 필요합니다.
4.1 발전 과정
- ASCII: 영문자와 기호 등을 표현하기 위한 7bit(8bit) 표준 코드입니다.
- Regional Encodings: 각 국가별 언어를 지원하기 위해 GBK(중국), EUC-KR(한국), Shift_JIS(일본) 등이 등장했으나, 국가 간 데이터 호환 시 글자가 깨지는 현상이 발생했습니다.
- Unicode & UTF-8: 전 세계 모든 언어를 수용하는 Unicode가 표준이 되었으며, 이를 효율적으로 저장하기 위한 가변 길이 인코딩 방식인 UTF-8이 현재 가장 널리 사용됩니다. (영어 1바이트, 한글 3바이트 등)
4.2 실무 활용: 인코딩과 디코딩
- 인코딩(Encoding): 사람이 읽는 문자열을 컴퓨터가 이해하는 바이트 데이터로 변환 (
str.encode('utf-8')) - 디코딩(Decoding): 바이트 데이터를 다시 문자열로 변환 (
bytes.decode('utf-8'))
# 인코딩/디코딩 예제
text = "파이썬"
encoded_data = text.encode('utf-8') # 바이트 타입으로 변환
decoded_text = encoded_data.decode('utf-8') # 다시 문자열로 복구
Python 3에서는 모든 문자열이 기본적으로 Unicode(UTF-8)를 지원하므로 과거 버전(Python 2)에 비해 다국어 처리가 훨씬 유연합니다.