[8장] 사전 & 집합: 데이터 관리와 조작의 기술

이번 챕터에서는 ‘사전 & 집합: 데이터 관리와 조작의 기술’에 대해 탐구합니다. 파이썬의 강력한 사전(dictionary)과 집합(set) 자료형을 통해 데이터를 효율적으로 관리하고 조작하는 방법을 배워봅시다. 이 글은 초보자부터 고급 개발자까지 모두에게 유용한 지침을 제공할 것입니다. 데이터 처리의 핵심 원리를 익히고, 실생활 문제 해결에 적용해보세요!

클릭하면 큰 화면으로 볼 수 있습니다.
혼자 공부하는 파이썬:1:1 과외하듯 배우는 프로그래밍 자습서, 한빛미디어

사전과 집합 시작하기!

파이썬 프로그래밍 언어에서 데이터를 효율적으로 관리하고 조작하는 데 필수적인 두 가지 자료형, 사전(dictionary)과 집합(set)에 대해 알아봅니다. 이 글은 파이썬의 기본 자료형을 넘어서, 데이터를 저장, 검색, 수정하는 고급 기법을 소개하며, 초보자부터 경험 많은 개발자까지 모두에게 유용한 정보를 제공합니다. 여러분은 이 글을 통해 데이터를 효과적으로 처리하는 핵심 원리를 배우고, 이를 실제 문제 해결에 적용하는 방법을 배울 수 있습니다. 이제, 파이썬의 사전과 집합을 사용하여 데이터를 더 스마트하게 관리해 보세요! 일반 데표 코드를 한번 구경해보세요.

사전 예제

# 단어와 그 정의를 저장하는 사전 만들기
my_dictionary = {
    "algorithm": "계산을 위한 단계별 절차입니다.",
    "bug": "프로그램이 예상대로 실행되지 않게 하는 프로그램 내 오류입니다."
}

# 새로운 단어와 정의 추가
my_dictionary["function"] = "여러 번 쉽게 호출할 수 있는 코드 조각입니다."

# 사전에서 특정 항목 조회
print("algorithm의 정의:", my_dictionary["algorithm"])

# 사전의 모든 항목을 반복하며 출력
for word, definition in my_dictionary.items():
    print(f"{word}: {definition}")

집합 예제

# 고유한 요소만 저장하는 집합 만들기
my_set = {1, 2, 3, 4, 5}

# 새로운 요소 추가
my_set.add(6)

# 중복 요소를 추가하려고 하면 자동으로 제거됨
my_set.add(3) # 이미 존재하는 요소, 집합에는 추가되지 않음

# 집합의 요소를 반복하며 출력
for element in my_set:
    print(element)

# 집합을 사용한 빠른 요소 존재 여부 확인
if 4 in my_set:
    print("4는 my_set에 존재합니다.")
Do it! 점프 투 파이썬, 이지스퍼블리싱

사전 심화

사전(Dictionary)은 파이썬에서 매우 유용하고 강력한 자료형 중 하나입니다. 사전은 키(key)와 값(value)의 쌍을 저장하는 데 사용되며, 각 키는 고유해야 합니다. 여기에는 사전을 효율적으로 사용하기 위한 몇 가지 중요한 함수들이 있습니다:

  1. get(key, default=None):
    • 이 함수는 주어진 키에 해당하는 값을 반환합니다. 키가 사전에 없는 경우, default 값을 반환합니다.
    • 예시: my_dict.get('key1', 'Not Found')
  2. keys():
    • 사전의 모든 키를 반환합니다.
    • 예시: my_dict.keys()
  3. values():
    • 사전의 모든 값을 반환합니다.
    • 예시: my_dict.values()
  4. items():
    • 사전의 모든 키-값 쌍을 튜플로 반환합니다.
    • 예시: my_dict.items()
  5. update(other_dict):
    • 다른 사전 other_dict의 키-값 쌍을 현재 사전에 추가합니다. 이미 존재하는 키의 경우, 해당 키의 값이 other_dict의 값으로 업데이트됩니다.
    • 예시: my_dict.update(another_dict)
  6. pop(key, default=None):
    • 주어진 키에 해당하는 항목을 제거하고, 그 값을 반환합니다. 키가 없는 경우 default 값을 반환합니다.
    • 예시: my_dict.pop('key1', 'Not Found')
  7. clear():
    • 사전의 모든 항목을 제거합니다.
    • 예시: my_dict.clear()
밑바닥부터 시작하는 딥러닝:파이썬으로 익히는 딥러닝 이론과 구현, 한빛미디어

이제 이 함수들을 활용하는 구체적인 코드 예시를 살펴보겠습니다.

# 사전 초기화
my_dict = {
    "apple": "a fruit",
    "book": "a set of written or printed pages",
    "cat": "a small domesticated carnivorous mammal"
}

# get() 사용 예시
print("apple의 정의:", my_dict.get("apple", "Not Found"))

# keys() 사용 예시
print("사전의 모든 키:", list(my_dict.keys()))

# values() 사용 예시
print("사전의 모든 값:", list(my_dict.values()))

# items() 사용 예시
print("사전의 모든 키-값 쌍:")
for key, value in my_dict.items():
    print(f"{key}: {value}")

# 다른 사전으로 업데이트
another_dict = {
    "dog": "a domesticated carnivorous mammal",
    "apple": "a tasty fruit"
}
my_dict.update(another_dict)

# update() 후의 사전 출력
print("업데이트 후의 사전:", my_dict)

# pop() 사용 예시
removed_value = my_dict.pop("book", "Not Found")
print("제거된 값:", removed_value)

# clear() 사용 예시
my_dict.clear()
print("모든 항목을 제거한 후의 사전:", my_dict)

이 코드들은 파이썬의 사전 자료형에서 사용되는 주요 함수들을 소개하고, 실제 사용 예시를 보여줍니다. 이를 통해 데이터를 검색, 추가, 수정, 삭제하는 방법을 배울 수 있습니다.

Do it! 점프 투 파이썬:이미 200만명이 이 책으로 프로그래밍을 시작했다!, 이지스퍼블리싱

집합심화

집합(Set)은 파이썬에서 중복을 허용하지 않고, 순서가 없는 요소들의 모음입니다. 집합은 데이터의 유일성을 보장하고, 수학적인 집합 연산을 수행하는 데 유용합니다. 여기 몇 가지 중요한 집합 함수들과 그 사용법에 대해 설명하고 코드 예시를 제공하겠습니다:

  1. add(element):
    • 집합에 요소를 추가합니다. 이미 요소가 존재하는 경우, 추가되지 않습니다.
    • 예시: my_set.add(6)
  2. remove(element):
    • 지정한 요소를 집합에서 제거합니다. 요소가 집합에 없는 경우 KeyError가 발생합니다.
    • 예시: my_set.remove(3)
  3. discard(element):
    • 지정한 요소를 집합에서 제거합니다. 요소가 집합에 없어도 오류가 발생하지 않습니다.
    • 예시: my_set.discard(4)
  4. pop():
    • 집합에서 임의의 요소를 제거하고 그 요소를 반환합니다. 집합이 비어있으면 KeyError가 발생합니다.
    • 예시: removed_element = my_set.pop()
  5. clear():
    • 집합의 모든 요소를 제거합니다.
    • 예시: my_set.clear()
  6. union(other_set) 또는 | 연산자:
    • 두 집합의 합집합을 반환합니다.
    • 예시: union_set = my_set.union(another_set)
  7. intersection(other_set) 또는 & 연산자:
    • 두 집합의 교집합을 반환합니다.
    • 예시: intersection_set = my_set.intersection(another_set)
  8. difference(other_set) 또는 - 연산자:
    • 한 집합과 다른 집합의 차집합을 반환합니다.
    • 예시: difference_set = my_set.difference(another_set)
  9. symmetric_difference(other_set) 또는 ^ 연산자:
    • 두 집합의 대칭 차집합을 반환합니다. 즉, 두 집합 중 하나에만 있는 요소들의 집합입니다.
    • 예시: sym_diff_set = my_set.symmetric_difference(another_set)

이제 이 함수들을 사용하는 구체적인 코드 예시를 살펴보겠습니다.

# 집합 초기화
my_set = {1, 2, 3, 4, 5}

# add() 사용 예시
my_set.add(6)
print("요소 추가 후:", my_set)

# remove() 사용 예시
my_set.remove(3)
print("요소 제거 후:", my_set)

# discard() 사용 예시
my_set.discard(5)
print("요소 제거 후:", my_set)

# pop() 사용 예시
removed_element = my_set.pop()
print("임의의 요소 제거 후:", my_set, "| 제거된 요소:", removed_element)

# clear() 사용 예시
my_set.clear()
print("모든 요소 제거 후:", my_set)

# 새로운 집합 생성
my_set = {1, 2, 3}
another_set = {3, 4, 5}

# union(), intersection(), difference(), symmetric_difference() 사용 예시
union_set = my_set.union(another_set)
intersection_set = my_set.intersection(another_set)
difference_set = my_set.difference(another_set)
sym_diff_set = my_set.symmetric_difference(another_set)

print("합집합:", union_set)
print("교집합:", intersection_set)
print("차집합:", difference_set)
print("대칭 차집합:", sym_diff_set)
Python 실습으로 기초부터:컴퓨팅 사고를 키우기 위한 첫 걸음, 서현사

이 코드들은 파이썬 집합의 주요 함수들과 집합 간의 연산 방법을 보여줍니다. 이를 통해 데이터의 고유성을 유지하고, 복잡한 집합 연산을 수행하는 방법을 배울 수 있습니다.

결론

이 글들을 통해 파이썬의 두 가지 중요한 자료형, 사전(Dictionary)과 집합(Set)에 대한 심도 있는 이해를 얻을 수 있습니다. 사전은 키와 값을 쌍으로 저장하여 데이터를 효율적으로 관리할 수 있게 해주며, 다양한 메소드를 통해 데이터의 검색, 추가, 수정, 삭제 등 다양한 작업을 손쉽게 할 수 있습니다. 반면, 집합은 중복 없는 요소들의 모음으로, 수학적 집합 연산을 수행하는 데 매우 적합합니다. 집합의 메소드들은 데이터의 고유성을 유지하고, 집합 간의 합집합, 교집합, 차집합 등을 계산하는 데 사용됩니다.

이 두 자료형은 파이썬 프로그래밍에서 데이터를 다루는 데 필수적이며, 각각의 특성을 잘 이해하고 활용한다면 보다 효율적이고 강력한 데이터 처리가 가능해집니다. 사전과 집합을 사용함으로써, 우리는 복잡한 데이터 구조를 쉽게 만들고 관리할 수 있으며, 이를 통해 프로그램의 성능을 최적화하고, 더 나은 문제 해결 방법을 찾을 수 있습니다. 이러한 지식은 파이썬을 사용하는 모든 분야에서 유용하게 적용될 수 있으며, 효과적인 프로그래밍 스킬을 개발하는 데 크게 기여할 것입니다.