[이것이 취업을 위한 코딩 테스트다 with 파이썬] Chapter 05. 사전, 집합 자료형

jieunee·2023년 2월 28일
0
post-custom-banner

1. 사전 자료형

  • 사전 자료형이란 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형 → 그러므로, 인덱스라는 것이 존재하지 않음
  • 리스트나 튜플과 달리 값에 순서가 없음
  • 키-값 쌍을 데이터로 가지기 때문에, 우리가 원하는 변경 불가능한 데이터를 키로 사용할 수 있다.
  • 사전 자료형이 사용되는 대표적인 예시는 사전(Dictionary)이다.
    • 파이썬의 사전 자료형은 내부적으로 해시 테이블을 이용하므로 데이터 검색 및 수정 시 O(1)의 시간 복잡도가 소요된다.
      # 출력문 : {'사과': 'Apple', '바나나': 'Banana'}
      data = dict()
      data['사과'] = 'Apple'
      data['바나나'] = 'Banana'
      
      print(data)
    • 사전 자료형 관련 함수
      • 키 데이터만 뽑아서 리스트로 이용 시 keys() 함수를 사용하고, 값 데이터만 뽑아서 리스트로 이용 시 values() 함수를 사용한다.

        data = dict()
        data['사과'] = 'Apple'
        data['바나나'] = 'Banana'
        
        # 키 데이터 리스트
        key_list = data.keys()
        # 값 데이터 리스트
        value_list = data.values()
        print(key_list) # 출력문 : dict_keys(['사과', '바나나'])
        print(value_list) # 출력문 : dict_values(['Apple', 'Banana'])
        
        # 각 키에 따른 값을 하나씩 출력
        # 출력문 : Apple Banana
        for key in key_list:
        		print(data[key])

2. 집합 자료형

  • 집합은 리스트 혹은 문자열을 이용해서 만들 수 있다.
  • 집합 자료형의 특징
    • 중복을 허용하지 않는다.
    • 순서가 없다.
    • 사전 자료형과 달리 키가 존재하지 않고, 값 데이터만 담는다.
  • 특정한 데이터가 이미 등장한 적이 있는지 여부를 체크할 때 매우 효과적
  • 집합 자료형의 초기화는 set() 함수를 이용하거나, 중괄호 {} 안에 각 원소를 콤마 , 기준으로 구분해서 넣으면 된다.
    # 집합 자료형 초기화 방법 1
    data = set([1, 2, 3, 4, 5])
    
    # 집합 자료형 초기화 방법 2
    data = {1, 2, 3, 4, 5}
    print(data)
  • 집합 자료형의 연산
    • 집합 연산으로 합집합(|), 교집합(&), 차집합(-) 연산이 있다.
      a = set([1, 2 ,3, 4, 5])
      b = set([3, 4, 5, 6, 7])
      
      print(a | b) # 합집합, 결과값 : {1, 2, 3, 4, 5, 6, 7}
      print(a & b) # 교집합, 결과값 : {3, 4, 5}
      print(a - b) # 차집합, 결과값 : {1, 2}
  • 집합 자료형 관련 함수
    • 하나의 집합 데이터에 값을 추가할 시 add() 함수를, 여러 개의 값을 한 번에 추가할 시 update() 함수를, 특정값을 제거할 시 remove() 함수를 이용한다.
      data = set([1, 2, 3])
      
      data.add(4) # 새로운 원소 추가, 출력값 : {1, 2, 3, 4}
      data.update([5, 6]) # 새로운 원소 여러 개 추가, 출력값 : {1, 2, 3, 4, 5, 6}
      data.remove(3) # 특정한 값을 갖는 원소 제거, 출력값 : {1, 2, 4, 5, 6}
profile
Back-End Developer 🌱
post-custom-banner

0개의 댓글