파이썬의 집합 데이터 타입
list 순서 있음. 중복 허용. mutable
tuple 순서 있음. 중복 허용. immutable
set 순서 없음. 중복 허용 안 함.
dict 순서 없음. key와 value 쌍으로 구성.
dict
dictionary 타입은 key-value 쌍으로 저장되는 데이터 집합이다.
list, tuple, set은 value 중심지만 알고보면 key-value쌍으로 구성되어 있다.
dict에서 key-value 쌍은 순서가 고정되지 않으므로 순서가 없고,
key는 중복될 수 없다.
'name'과 'email'이라는 key 값이 있고,
'name' key에 대응하는 value 값인 '홍길동'과
'email' key에 대응하는 값인 'hong@mail.com' value 값이 있는 것이다.
value 값 가져오기
dict[key]를 사용해서 value 값을 가져올 수 있다.
이 방법으로 value 값을 가져올 때, 없는 key로 접근하려하는 경우에는 KeyError가 발생한다.
get() 함수를 사용해서 가져오면 존재하지 않는 key 값으로 접근해도 오류가 발생하지 않는다.
그리고 get() 함수의 두 번째 매개변수는 default 값이다.
만약 key 값에 대응하는 value가 없는 경우 default 값을 반환한다.
추가 ,수정, 삭제
dict[새로운 key] = value를 하면 새로운 요소가 추가된다.
만약 기존에 있는 key를 사용하는 경우 해당 key에 대응하는 value 값이 수정된다.
dict에서 요소를 삭제하려면 del() 함수를 사용한다.
dict.update()
update() 함수를 사용해서 dict에 새로운 요소를 추가하거나 기존 요소를 수정할 수 있다.
key와 value의 타입
value는 어떠한 타입이라도 모두 가능하지만 key는 hash 가능한 타입만 된다.
hash 가능한 타입 ex. int, float, str, bool, ...
value가 dict나 list 등의 집합 데이터 타입인 경우는 다음과 같이 접근한다.
key에는 변수 값도 넣을 수 있다.
In [8]에서 key 값을 변수 ccc, 변수 ddd로 넣은 것이다.
없는 변수를 key 값으로 두려는 경우 In [7]에서와 같이 NameError가 발생한다.
keys(), values()
keys() 함수는 key들로만 구성된 iterable 객체를 반환하고
values() 함수는 value들로만 구성된 iterable 객체를 반환한다.
반환된 객체들로 set이나 list등을 만들 수 있다.
in dict
in 연산자는 dict 안에 key가 존재하는지의 여부를 알려준다.
key 값만 검사하므로 value 값은 검사하지 않는다.
따라서 In [42]에서 23이라는 value 값은 있지만 key가 아니므로 False가 반환되는 것이다.
empty dict
빈 dict는 {} 로 만든다.
Dictionary 관련 함수
https://www.w3schools.com/python/python_ref_dictionary.asp