딕셔너리(Dictionary) 자료형
딕셔너리(Dictionary)란
대응 관계를 나타내는 자료형
연관 배열 또는 해시 라고 함
key 와 value를 한쌍으로 갖는 자료형
key를 통해 value를 얻는다.
임의의 key에 의해 indexed 된 임의의 value들의 해시 테이블
key는 그 값을 변경할 수 없는 immutable 타입
value는 Immutable, mutable 모두 가능
- key로 문자열이나 Tuple은 사용가능하지만, list는 사용할 수 없음
순서가 없는 자료형
딕셔너리(Dictionary)의 생성 방법
{Key1:Value1, Key2:Value2, Key3:Value3, ...}
dic = {'name':'pey', 'phone':'01199993323', 'birth':'1118'} a = {1: 'hi'} b = {'a': [1,2,3]} c = {} # 빈 dictionary 자료형 변수 d = dict(watch=7, iphone=14, mac=1) # 생성자
딕셔너리 쌍 추가, 삭제
딕셔너리 쌍 추가
a = {1: 'a'} a[2] = 'b' # 이름[key] = value a res : {1: 'a', 2: 'b'} a['name'] = 'pey' a res : {1: 'a', 2: 'b', 'name': 'pey'} a[3] = [1, 2, 3] a res : {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
딕셔너리 요소 삭제
a = {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]} del a[1] # key가 1 인 key:value 삭제 a res : {2: 'b', 'name': 'pey', 3: [1, 2, 3]}
딕셔너리 Key를 사용해 Value 얻기
grade = {'pey': 10, 'julliet': 99} grade['pey'] res : 10 grade['julliet'] res : 99
딕셔너리를 만들 때 주의사항
딕셔너리에서 Key는 고유한 값이므로 중복되는 Key를 설정하면, 하나를 제외한 나머지가 무시된다
a = {1: 'a', 1: 'b'} a res : {1: 'b'}
딕셔너리 key에 딕셔너리는 당연히 사용하지 못한다
value는 key와 달리 상관 없다
딕셔너리 관련 함수
Key 객체 만들기(keys 함수)
: 딕셔너리이름.keys()
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} a.keys() // dicts_keys 객체를 리턴한다. res : dict_keys(['name', 'phone', 'birth'])
Python 3.0 이전에는 a.keys() 리턴값이 리스트였지만, 3.0 이후에는 메모리 낭비를 줄이기 위해 dicts_keys 객체를 리턴함
- 이 객체는 리스트 고유의 append, insert, pop, remove, sort함수는 사용할 수 없다
list가 필요하면, list(a.keys()) 를 사용해 형변환을 하면 된다.
list(a.keys()) res : ['name', 'phone', 'birth']
dict_keys, dict_values, dict_items 등은 리스트로 변환하지 않아도 iterate(반복) 구문 실행 가능하다.
for k in a.keys(): print(k) res: name phone birth
Value 객체(리스트) 만들기 (values 메서드)
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} a.values() res : dict_values(['pey', '01034242424', '1118'])
Key, Value 쌍 객체(리스트) 얻기(items 메서드)
a.items() # Key와 Value 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다 res : dict_items([('name', 'pey'), ('phone', '01034242424'), ('birth', '1118')])
Key, Value 쌍 모두 지우기(clear 메서드)
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} a.clear() # 모든 요소 삭제 a res : {}
Key로 Value 얻기(get 메서드)
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} a.get('name') # a['name'] 과 같은 결과 res : 'pey'
여기서 a['nokey']는 오류를 발생시키지만, a.get('nokey')는 None을 돌려준다.
get메서드 default 값 셋팅 (찾으려는 key가 없는 경우)
- a.get(x, '디폴트값') 사용
- a.get('foo', 'bar') # 딕셔너리에 'foo'라는 값이 없어서 'bar'를 돌려준다.
동시에 여러요소 추가하기(update 메서드)
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} a.update({'weight': 67.8, 'height': 189.7})
요소 삭제하기(del 메서드)
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} del dict1['birth'] # del dictonary_name[key] a res : a = {'name': 'pey', 'phone': '01034242424'}
해당 Key가 딕셔너리에 있는지 조사하기(in 함수)
a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'} 'name' in a res : True 'email' in a res : False
참조) Do it! 점프 투 파이썬 (박응용 지음), https://wikidocs.net (파이썬 계단밟기)
'Programming Language > Python' 카테고리의 다른 글
[Python] 09. 변수(Variable) (0) | 2023.11.05 |
---|---|
[Python] 08. 불(bool) 자료형 (0) | 2023.11.05 |
[Python] 06. 집합(set) 자료형 (0) | 2023.11.05 |
[Python] 05. 튜플(Tuple) 자료형 (0) | 2023.11.04 |
[Python] 04. 리스트(list) 자료형 (0) | 2023.11.04 |