Programing/Python
#데이터 타입과 컬렉션 - 3
CouqueD'asse
2022. 6. 17. 14:23
dictionary
- 키와 값을 갖는 데이터 구조
- 키는 내부적으로 hash값으로 저장
- 순서를 따지지 않음. 즉, 인덱스가 없음
- 항목 추가 및 변경
- 기존에 키가 존재하면, 새로운 값으로 업데이트
- 존재하지 않으면, 새로운 키, 값 생성
a = {'Korea' : 'Seoul', 'Canada': 'Ottawa', 'USA' : 'Washington D.C'}
print(a['Korea'])
Seoul
a['Japan'] = 'Tokyo'
print(a)
{'Korea': 'Seoul', 'Canada': 'Ottawa', 'USA': 'Washington D.C', 'Japan': 'Tokyo'}
b= {0:1, 1:6, 4:8, 7:9}
print(b[4])
8
update()
- 두 딕셔너리를 병합함
- 겹치는 키가 있다면 parameter로 전달되는 키 값이 overwrite된다.
a = {'a':1, 'b':2, 'c':3}
b = {'a':2, 'd':4, 'e':5}
a.update(b)
print(a)
{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
Key 삭제
- pop 함수 이용
- del 키워드 사용
a = {'a':1, 'b':2, 'c':3}
a.pop('b')
print(a)
{'a': 1, 'c': 3}
a = {'a':1, 'b':2, 'c':3}
del a['b']
print(a)
{'a': 1, 'c': 3}
clear()
- 딕셔너리의 모든 값을 초기화
a = {'a':1, 'b':2, 'c':3}
print(a)
a.clear()
print(a)
{'a': 1, 'b': 2, 'c': 3}
{}
in
- key 값 존재 확인
- 0(1) 연산 : 딕셔너리의 크기와 관계없이 항상 연산 속도가 일정하다는 의미
a = {'a':1, 'b':2, 'c':3}
print(a)
'b' in a
{'a': 1, 'b': 2, 'c': 3}
Out: True
vlaue access
- dict[key]로 접근, 키가 없는 경우 에러 발생
- .get() 함수로 접근, 키가 없는 경우 None 반환
a = {'a':1, 'b':2, 'c':3}
print(a['b'])
print(a.get('d'))
2
None
모든 keys, values 접근
- keys() : 키만 반환
- vlaues() : 값만 반환
- items() : 키, 값의 튜플을 반환
print(a)
print(list(a.keys()))
print(a.values())
list(a.items())
{'a': 1, 'b': 2, 'c': 3}
['a', 'b', 'c']
dict_values([1, 2, 3])
[('a', 1), ('b', 2), ('c', 3)]
set
- dictionary에서 key만 활용하는 데이터 구조로 이해
- 수학에서의 집합과 동일한 개념
- set()으로 집합으로 변환
- set operations
- 수학연산과 동일
- 교집합, 합집합, 차집합 등 지원
a = {1, 1, 2, 3, 4, 4, 5}
print(a)
a = set()
a = [1, 1, 2, 3, 4, 4, 5]
b = set(a)
print(b)
{1, 2, 3, 4, 5}
[1, 1, 2, 3, 4, 4, 5]
{1, 2, 3, 4, 5}
a = {1, 2, 3}
b = {2, 3, 4}
print(a.union(b)) # 합지합
print(a.intersection(b)) # 교집합
print(a.difference(b)) # 차집합
print(a.issubset(b)) # 부분 집합
{1, 2, 3, 4}
{2, 3}
{1}
False