Python 딕셔너리, 집합

김경호·2024년 5월 5일

Python

목록 보기
6/7
post-thumbnail

1. 딕셔너리

딕셔너리(Dictionary)

  • 키(Key)-값(Value) 쌍으로 데이터를 저장(JSON 형식과 유사하며 데이터를 효율적으로 저장, 검색 가능)
  • 순서가 없음
  • 키는 변경 불가능한 타입이어야 하며 (문자열, 숫자, 튜플), 값은 어떤 타입이든 가능
  • 리스트의 인덱스(순서)에서는 정수만 가능 ex) list[0], list[-1]과 같이 접근한 것

딕셔너리 키 사용 가능한 데이터타입

  • 문자열(String)
  • 숫자(Integer, Float)
  • 튜플(Tuple)

딕셔너리 키 사용 불가능한 데이터타입

  • 리스트(List)
  • 딕셔너리(Dictionary)
  • 집합(Set)

딕셔너리 생성

  • 중괄호 {}를 사용해 생성
  • Key가 중복되면 최신 값만 출력됨

my_dict = {
'name': 'John',
'age': 25,
'name': 'Alice' # 'name' 키가 중복됨
}
print(my_dict) # 출력: {'name': 'Alice', 'age': 25}

딕셔너리 value 얻기

  • 직접 인덱싱
  • get() 메서드 사용
  • 오류처리 : 직접 인덱싱은 키가 없을 때 KeyError를 발생시키지만, get() 메서드는 None을 반환하거나 선택적으로 다른 기본값을 반환
  • 기본값 지정 : get() 메서드는 키가 없을 경우 반환할 기본값을 설정 가능

person = {"name": "John", "age": 30, "city": "New York"}
#직접 인덱싱 사용
try:
print("Name:", person["name"]) # 존재하는 키
print("Salary:", person["salary"]) # 존재하지 않는 키
except KeyError:
print("KeyError: 'salary' key does not exist.")
#get() 메서드 사용
print("\nUsing get() method:")
print("Name:", person.get("name")) # 존재하는 키
print("Salary:", person.get("salary")) # 존재하지 않는 키, None을 반환
print("Salary with default:", person.get("salary", "Not Available")) # 존재하지 않는 키, 기본값 "Not Available" 반환

딕셔너리 요소 추가 및 수정, 제거

  • 딕셔너리의 특정 키에 대한 값을 접근하거나 수정할 때는 키를 사용

    my_dict = {"name": "John", "age": 30, "city": "New York"}
    my_dict["email"] = "john@example.com" # 새로운 키와 값 추가
    my_dict["age"] = 31 # 기존 키의 값 수정
    print(my_dict)

  • 요소 제거시는 del 키워드, pop() 메서드, 또는 popitem() 메서드를 사용하여 딕셔너리에서 요소를 제거

    #del 키워드를 사용하여 키-값 쌍 제거
    del my_dict["city"]
    #pop() 메서드를 사용하여 키-값 쌍 제거 및 값 반환
    age = my_dict.pop("age")
    print("Removed age:", age)
    #popitem() 메서드는 마지막 키-값 쌍을 제거하고 반환
    item = my_dict.popitem()
    print("Removed item:", item)
    print(my_dict)

딕셔너리 키, 값, 아이템 접근하기

  • keys() 메서드는 딕셔너리의 모든 키를 포함하는 dict_keys 객체 반환
  • values() 메서드는 딕셔너리의 모든 값들을 포함하는 dict_values 객체 반환
  • items() 메서드는 딕셔너리의 키-값 쌍을 튜플로 갖는 dict_items 객체 반환 / 각 튜플은 하나의 키-값 쌍을 나타내며 종종 반복문에서 딕셔너리의 키와 값을 동시에 접근하는데 사용

    my_dict = {"name": "John", "age": 30, "city": "New York"}
    #모든 키만 가져오기
    keys = my_dict.keys()
    print(keys)
    #모든 값만 가져오기
    values = my_dict.values()
    print(values)
    #모든 키-값 쌍 가져오기
    items = my_dict.items()
    print(items)

2. 집합

집합(Set)

  • 집합은 중복을 허용하지 않고, 순서가 없는 요소들의 모임
  • 집합은 주로 데이터의 중복을 제거하거나 항목의 존재 여부를 효율적으로 확인할 때 사용
  • 주로 요소의 존재 여부를 검사하거나 중복 요소를 제거하는 데 사용
  • 수학적 집합 연산(합집합, 교집합, 차집합 등) 지원

집합 생성

  • 중괄호를 {} 이용해 생성, 키가 없음

    my_set = {1, 2, 3, 4, 5}
    print(my_set)

집합 요소 추가 및 삭제

my_set.add(6) # 요소 6 추가
print(my_set)
my_set.remove(1) # 요소 1 삭제
print(my_set)

집합 연산

  • 합집합 | 연산자 사용(A.union(B))
  • 교집합 & 연산자 사용(A.intersection(B, C))
  • 차집합 - 연산자 사용(A.difference(C))

    A = {1, 2, 3, 4, 5}
    B = {4, 5, 6, 7}
    C = {1, 5, 9}
    #2. 집합 A와 B의 합집합을 구하세요.
    union_AB = A.union(B)
    print(union_AB)
    #3. 집합 A와 C의 차집합을 구하세요.
    diff_AC = A.difference(C)
    print(diff_AC)
    #4. 집합 A, B, C의 교집합을 구하세요.
    inter_ABC = A.intersection(B, C)
    print(inter_ABC)

profile
취미해킹

0개의 댓글