Lumpy Space Princess - Adventure Time
코딩테스트/이것이 코딩 테스트다

[이것이 코딩 테스트다] 파이썬 - 사전(딕셔너리), 집합 자료형

yaebb_82 2022. 6. 29.

 

 

사전(딕셔너리)

사전(딕셔너리) 자료형

: 키(key)값(value)의 쌍을 데이터로 가지는 자료형

  cf.) 리스트와 튜플처럼 순차적으로 값을 저장하는 자료형들과는 다르다

: 변경 불가능한 자료형로 사용 (해당 키 값으로 원소에 접근 가능)

: 해쉬 테이블을 사용하므로, 데이터 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있다

data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

print(data)

#딕셔너리 객체에 특정 키가 존재하는 지 확인
if '사과' in data:
    print("'사과'를 키로 가지는 데이터가 존재합니다.")
    
#결과
#{'사과':'Apple', '바나나':'Banana', '코코넛':'Coconut'}
#'사과'를 키로 가지는 데이터가 존재합니다.

- 사전 자료형을 초기화 할 때는, dict() 함수로 초기화 할 수 있다

- 특정한 키에 어떠한 값을 할당할 때는, []를 이용해서 키 값을 넣어주고 원하는 값을 매핑하면 된다

- 사전 자료형을 출력하게 되면 {}로 감싸진 하나의 사전(딕셔너리) 객체가 출력되는 것을 볼 수 있다

 

 

 

사전 자료형 관련 메서드

- keys() 함수 : 키 데이터만 뽑아서 리스트로 이용

- values() 함수 : 값 데이터만 뽑아서 리스트로 이용

key_list = data.keys()
value_list = data.values()
print(key_list)
print(value_list)

#결과 (사전키, 사전값 객체로 반환됨)
#dict_keys(['사과', '바나나', '코코넛'])
#dict_values(['Apple', 'Banana', 'Coconut'])

#앞에 dict_keys, dict_values를 없애주기 위해서 list형 데이터로 형 변환 수행
key_list = list(data.keys())
value_list = list(data.values())

#결과
#['사과', '바나나', '코코넛']
#['Apple', 'Banana', 'Coconut']

 

 

 

집합

집합 자료형

: 중복을 허용하지 X

: 순서가 X

→ 집합 자료형을 데이터 존재 유무 판별에 효과적으로 사용 가능

 

: 집합은 리스트 / 문자열 을 사용하여 초기화

: set() 함수를 이용

: 중괄호({}) 안에 원소를 , 기준으로 구분하여 삽입하여 초기화

→ 데이터 조회 및 수정에 있어서 O(1)의 시간에 처리 (사전 자료형과 동일)

#집합 자로형 초기화 - set() 함수 사용
data = set([1, 1, 2, 3, 3, 4, 5])
print(data)

#결과
#{1, 2, 3, 4, 5}

#집합 자료형 초기화 - {} 사용
data = {1, 1, 2, 3, 3, 4, 5}
print(data)

#결과
#{1, 2, 3, 4, 5}

- 집합 자료형의 성질에 따라 중복이 배제된 채로 결과가 출력된다

 

 

 

집합 자료형의 연산

: 합집합( | ), 교집합( & ), 차집합( - ) 연산 존재

 

 

 

집합 자료형 관련 함수

- add(추가할 값) : 새로운 원소 추가

- update([값1, 값2 ... ]) : 새로운 원소 여러 개 추가

- remove(제거할 값) : 특정 값을 갖는 원소 삭제

data = set([1, 2, 3])
print(data)

#결과
#{1, 2, 3}

data.add(4)
print(data)

#결과
#{1, 2, 3, 4}

data.update([5, 6])
print(data)

#결과
#{1, 2, 3, 4, 5, 6}

data.remove(3)
print(data)

#결과
#{1, 2, 4, 5, 6}

 

 

 

[정리] 사전 자료형과 집합 자료형의 특징

- 리스트 or 튜플 : 순서가 있기 때문에 인덱싱으로 자료형의 값을 얻을 수 있음

- 사전 자료형 or 집합 자료형 : 순서가 없기 때문에 인덱싱으로 자료형의 값을 얻을 수 없음

    cf.) 사전의 key or 집합의 원소 를 이용해 O(1) 의 시간 복잡도로 조회

 

 

 

반응형

댓글