딕셔너리는 파이썬에서 제공하는 기본 자료형으로 해시 테이블(hash table)로 구현되어 있습니다. 해시 테이블은 키와 값이 연관되어 있고, 키(key)를 통해 연관된 값(value)을 얻는 연관 배열(associative array)을 구현하는 데 사용되는 자료구조로 리스트와 유사하지만 값이 순서가 아닌 값에 연결되는 키로 값을 조회할 수 있습니다. 딕셔너리는 가변(mutable) 자료형으로 딕셔너리 내의 키-값 요소의 추가, 삭제, 변환이 자유롭습니다.
목차
1. 딕셔너리 선언
2. 자료형 변환 dict( )
3. 컬렉션 데이터 타입 속성-딕셔너리
(1). 멤버십 연산 in
(2). 크기 함수 len(seq)
(3). 반복성(iterable)
4. 딕셔너리: 자료 조회, 추가 및 삭제
(1) [key]를 이용한 자료 조회, 추가, 삭제
(2) del을 이용한 자료 삭제
5. 딕셔너리 메서드
(1) setdefault( )
(2) update( )
(3) get( )
(4) items( ), values( ), keys( )
(5) pop( ), popitem( )
(6) clear( )
1. 딕셔너리 선언
딕셔너리도 셋과 동일하게 중괄호 { }를 이용하여 선언합니다.
빈 딕셔너리는 괄호 내 아무런 요소 없이 선언함으로써 만들 수 있습니다.
empty_dict = { } print(empty_dict) print(type(empty_dict)) |
결과)
{} <class 'dict'> |
딕셔너리 내 요소는 키-값 쌍으로 구성되며 이는 콜론(:)을 통해 연결됩니다. 따라서 요소를 포함한 딕셔너리를 만들 때는 key:value 형태를 { } 내 포함시키면 됩니다. 이때 시각적 편의를 위해서 줄바꿈 등이 허용됩니다.
tarantino = {'name': 'Quentin Tarantino', 'job': 'director'} mipro = { '302': ['전영근', '김현수'], 'icp': ['윤영', '홍진우'] } print(tarantino) print(mipro) |
결과)
{'name': 'Quentin Tarantino', 'job': 'director'} {'302': ['전영근', '김현수'], 'icp': ['윤영', '홍진우']} |
2. 자료형 변환 dict( )
dict( ) 함수는 두 개의 값으로 구성되어 있는 시퀀스 자료형을 딕셔너리로 변환합니다. 시퀀스 자료형으로는 문자열, 튜플, 리스트가 있다는 것을 배웠습니다.
lol = [['a', 'b'], ['c', 'd'], ['e', 'f']] print(dict(lol)) lot = [('a', 'b'), ('c', 'd'), ('e', 'f')] print(dict(lot)) tol = (['a', 'b'], ['c', 'd'], ['e', 'f']) print(dict(tol)) los = ['ab', 'cd', 'ef'] print(dict(los)) tos = ('ab', 'cd', 'ef') print(dict(tos)) |
결과)
{'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'} {'a': 'b', 'c': 'd', 'e': 'f'} |
3. 컬렉션 데이터 타입 속성-딕셔너리
(1). 멤버십 연산 in
딕셔너리 내 특정 키가 존재하는지 확인하는 데 사용됩니다.
pythons = {'Chapman': 'Graham', 'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael'} print('Chapman' in pythons) print('John' in pythons) |
결과)
True False |
키가 아닌 값을 조회할 경우 False를 반환합니다.
(2). 크기 함수 len(seq)
딕셔너리 내 key:value 쌍이 몇 개인지를 출력합니다.
pythons = {'Chapman': 'Graham', 'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael'} print(len(pythons)) |
결과)
4 |
(3). 반복성(iterable)
컬렉션 자료형인 딕셔너리는 iterable입니다. for이나 while과 같은 구문을 이용한 반복 처리가 가능하며 key를 순회하며 조회합니다.
pythons = {'Chapman': 'Graham', 'Cleese': 'John', 'Jones': 'Terry', 'Palin': 'Michael'} for key in pythons: print(key) |
결과)
Chapman Cleese Jones Palin |
4. 딕셔너리: 자료 조회, 추가 및 삭제
(1) [key]를 이용한 자료 조회, 추가, 삭제
딕셔너리 내에 있는 특정 키에 대한 값을 조회하기 위해서는 dic[key]를 조회하면 됩니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee' } print(coffee['윤영']) |
결과)
latte |
딕셔너리에 새로운 요소나 항목을 추가할 때는 대괄호를 이용하여 dic[key] = value와 같이 선언하면 자료가 추가됩니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee' } coffee['명경규'] = 'mocha' print(coffee) |
결과)
{'전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha'} |
자료의 변경도 마찬가지로 dic[key] = value와 같이 선언하면 됩니다. 다만 이때 key는 기존에 딕셔너리 내에 있는 key여야 합니다. 없다면 새로운 자료가 추가됩니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha' } coffee['명경규'] = 'hot coffee' print(coffee) |
결과)
{'전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'hot coffee'} |
(2) del을 이용한 자료 삭제
del 선언을 통해 딕셔너리 내 특정 키로 인식되는 키:값 쌍을 삭제할 수 있습니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha' } del coffee['명경규'] print(coffee) |
결과)
{'전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee'} |
5. 딕셔너리 메서드
setdefault( ), update( ), get( ), items( ), values( ), keys( ), pop( ), popitem( ), clear( )
(1) setdefault( )
setdefault( ) 메서드는 딕셔너리에서 키의 존재 여부를 모른 채 접근하여 조회할 때 사용됩니다. 디셔너리에 존재하지 않는 키에 접근하면 예외가 발생합니다.
A.setdefault(key, default): 딕셔너리 A에 key가 존재할 경우 키에 해당하는 값을 얻을 수 있고, key가 존재하지 않는다면 새 키와 기본값 default가 딕셔너리에 저장됩니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha' } print(coffee.setdefault('전영근', 'cappuccino')) print(coffee.setdefault('김태영', 'cappuccino')) print(coffee) |
결과)
americano cappuccino {'전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino'} |
(2) update( )
A.update(B): 딕셔너리 A에 딕셔너리 B의 키가 존재한다면, 기존 A의 키:값 쌍을 B의 키:값으로 갱신합니다. B의 키가 A에 존재하지 않는다면, B의 키:값을 A에 추가합니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino' } coffee.update({'전현우': 'latte', '홍진우': 'iced coffee', '윤영': 'mocha'}) print(coffee) |
결과)
{'전영근': 'americano', '윤영': 'mocha', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino', '전현우': 'latte', '홍진우': 'iced coffee'} |
(3) get( )
A.get(key): 딕셔너리 A의 key 값을 반환합니다. key가 존재하지 않으면 아무것도 반환하지 않습니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino' } print(coffee.get('윤영')) print(coffee.get('홍진우')) print(coffee['홍진우']) |
결과)
print(coffee['홍진우']) KeyError: '홍진우' latte None |
(4) items( ), values( ), keys( )
items( ), keys( ), values( ) 메서드는 딕셔너리의 뷰(딕셔너리의 항목을 조회하는 읽기 전용의 반복 가능한 객체)입니다. items( )는 키:값 쌍으로, keys( )는 키로, values( )는 값으로 이루어지는 iterable을 반환합니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino' } print(coffee.items( )) print(coffee.keys( )) print(coffee.values( )) |
결과)
dict_items([('전영근', 'americano'), ('윤영', 'latte'), ('김현수', 'iced coffee'), ('명경규', 'mocha'), ('김태영', 'cappuccino')]) dict_keys(['전영근', '윤영', '김현수', '명경규', '김태영']) dict_values(['americano', 'latte', 'iced coffee', 'mocha', 'cappuccino']) |
iterable이기 때문에 for 문과 같은 문법으로 순회가 가능합니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino' } for i in coffee.items( ): print(i) |
결과)
('전영근', 'americano') ('윤영', 'latte') ('김현수', 'iced coffee') ('명경규', 'mocha') ('김태영', 'cappuccino') |
items( )의 경우 (키, 값) 형태의 튜플을 반환합니다. keys( )와 values( )는 해당 자료형을 반환합니다.
(5) pop( ), popitem( )
A.pop(key): 딕셔너리 A의 key 항목을 제거한 후 그 값을 반환합니다.
A.popitem( ): 딕셔너리 A에서 항목(키와 값)을 제거한 후 그 키와 항목을 반환합니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino' } print(coffee.pop('명경규')) print(coffee.popitem( )) print(coffee.popitem( )) print(coffee) |
결과)
mocha ('김태영', 'cappuccino') ('김현수', 'iced coffee') {'전영근': 'americano', '윤영': 'latte'} |
(6) clear( )
A.clear( ): 딕셔너리 내 모든 항목을 제거합니다.
coffee = { '전영근': 'americano', '윤영': 'latte', '김현수': 'iced coffee', '명경규': 'mocha', '김태영': 'cappuccino' } coffee.clear( ) print(coffee) |
결과)
{} |
'Python-기본 > Python-데이터 타입 및 자료 구조' 카테고리의 다른 글
Python-컬렉션 데이터 타입(1. 셋) (0) | 2021.01.05 |
---|---|
Python-3. 시퀀스 데이터 타입(3. 리스트) (0) | 2021.01.04 |
Python-3. 시퀀스 데이터 타입(2. 튜플) (0) | 2020.12.30 |
Python-3. 시퀀스 데이터 타입(1. 문자열) (0) | 2020.12.20 |
Python-2. 숫자 데이터 타입 다루기 (0) | 2020.12.14 |