파이썬 데이터 타입별 핵심 메서드 및 문자 인코딩의 이해

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 발전 과정

  1. ASCII: 영문자와 기호 등을 표현하기 위한 7bit(8bit) 표준 코드입니다.
  2. Regional Encodings: 각 국가별 언어를 지원하기 위해 GBK(중국), EUC-KR(한국), Shift_JIS(일본) 등이 등장했으나, 국가 간 데이터 호환 시 글자가 깨지는 현상이 발생했습니다.
  3. 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)에 비해 다국어 처리가 훨씬 유연합니다.

태그: python dictionary Tuple set Encoding

7월 20일 16:24에 게시됨