python/파이썬 기본
4. dict & set
Abokadoh
2023. 2. 11. 19:50
1. dictionary 란?
- dict는 python을 사용하면 아주 많이 사용하게 될 자료형이다.
- key 와 value를 갖는 데이터 구조이다.
- key는 내부적으로 hash값으로 저장된다.
- dict는 순서를 따지지 않는다. 쉽게 말해 인덱스가 없음!
# <in>
a = {'Korea': 'Seoul',
'Canada': 'Ottawa',
'USA': 'Washington D.C'}
b = {0:1, 1:6, 7:9, 8:10}
print(b[0]) # dict 구조에서 [ ]안에 0은 인덱스0이 아닌 key값 0이다.
print(a['Korea'])
# <out>
1
Seoul
2. dict 에서의 항목 추가 및 변경
- 기존에 key가 존재하면, 새로운 값으로 업데이트
- 존재하지 않으면, 새로운 key나 value를 생성한다.
# <in>
a = {'Korea': 'Seoul', 'Canada': 'Ottawa', 'USA': 'Washington D.C'}
a['Japan'] = 'Tokyo' # 'Japan' key를 추가하고 value값을 'Tokyo'로
a['Japan'] = 'Kyoto' # 기존 'Japan' key의 value값을 'Kyoto'로 변경
a['Japan2'] = 'Kyoto' # 'Japan2' key를 추가하고 value값을 'Kyoto'로 변경
a['China'] = 'Beijing' # 'China' key를 추가하고 value값을 'Beijing'로
a
# <out>
{'Korea': 'Seoul',
'Canada': 'Ottawa',
'USA': 'Washington D.C',
'Japan': 'Kyoto',
'Japan2': 'Kyoto',
'China': 'Beijing'}
- dict 멤버 함수
updata()
- 두 dictionary를 병합하는 함수
- 겹치는 키가 있다면, parameter로 전달되는 key값이 overwrite된다.
# <in>
a = {'a': 1, 'b': 2,'c': 3}
b = {'a': 2, 'd':4, 'e': 5}
a.update(b) # 겹치는 키 값인 'a'는 overwrite 되고 나머지는 업데이트
# <out>
{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
key 삭제
del
키워드 사용pop
함수 사용
# <in>
a = {'a': 1, 'b': 2, 'c': 3}
del a['b'] # a에서 키 값 'b'를 삭제
print(a)
# <out>
{'a': 1, 'c': 3}
# <in>
a = {'a': 1, 'b': 2, 'c': 3}
_pop = a.pop('b') # a에서 키 값 'b'를 추출하고 'b'의 value를 반환
print(_pop)
print(a)
# <out>
2
{'a': 1, 'c': 3}
clear()
- dictionary의 모든 값을 초기화
# <in>
a = {'a':1, 'b':2}
print(a)
a.clear()
print(a)
# <out>
{'a': 1, 'b': 2}
{}
in
- key값의 존재를 확인하는 함수
- O(1) 연산 - dictionary의 크기와 관계없이 항상 연산의 속도가 일정하다는 의미
# <in>
a = {'a': 1, 'b':2, 'c': 3}
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
print(100 in b)
print(2 in a)
# <out>
True
False
3. value access
dict\[key\]
로 접근, key가 없는 경우error
가 발생한다..get()
함수로 접근, key가 없는 경우None
을 반환한다.
# <in>
a = {'a': 1, 'b': 2, 'c': 3}
print(a.get('d'))
print(a['d'])
if 'd' in a:
print(a['d'])
# <out>
None
KeyError
4. 모든 keys, values에 접근
.keys()
→ key 값만 반환.values()
→ value 값만 반환.items()
→ key, value 값을 튜플로 반환
# <in>
a = {'a': 1, 'b': 2, 'c': 3}
a
list(a.keys())
list(a.values())
# <out>
{'a': 1, 'b': 2, 'c': 3}
['a', 'b', 'c']
[1, 2, 3]
5. set
- dictionary에서 key만 활용하는 데이터 구조로 이해하면 편하다.
- 수학에서의 집합과 동일한 개념
# <in>
a = {1, 1, 2, 3, 3, 4, 1, 5}
print(a)
# <out>
{1, 2, 3, 4, 5}
set()
함수로set type
(집합)으로 변환이 가능하다.
# <in>
a= [1, 1, 2, 3, 3, 4, 1, 5]
print(a)
b = set(a)
print(b)
# <out>
[1, 1, 2, 3, 3, 4, 1, 5]
{1, 2, 3, 4, 5}
- set operations
- 수학 연산과 동일
- 교집합, 합집합, 차집합 등 지원
# <in>
a = {1, 2, 3}
b = {2, 3, 4}
print(a.union(b)) #합집합
print(a.intersection(b)) #교집합
print(a.difference(b)) #차집합
print(a.issubset(b)) #부분집합
# <out>
{1, 2, 3, 4}
{2, 3}
{1}
False