본문 바로가기

Python

Python - Dictionary

딕셔너리는 { } 로 감싸고, 순서가 없으며 key : value 쌍으로 이루어진 요소끼리는 쉼표로 구분한다.

hashable, immutable한 것만 key가 될 수 있다. value는 어떤 자료형이든 다 가능하다.

dict1 = {key1 : val1, key2 : val2, key3 : val3, ... }

 

key, value 값이 나란히 들어있는 리스트나 튜플이 요소로 들어있는 리스트나 튜플은 dict로 변형 가능하다.

[ [ key1 , val1 ] ], [ ( key1 , val1 ) ], ( [ key1 , val1 ] ), ( ( key1 , val1 ) ) 형태가 할당되어 있는 변수에 dict()를 띄우면

-> { key1 : val1 } 이렇게 변환된다.

빈 딕셔너리 만들기

새로 선언    dict1 = {}

기존 딕셔너리 비우기    dict1.clear()

수정

확장과 동일하지만 딕셔너리에 존재하는 key인 경우 기존 value를 새로운 value가 대체한다.    dict1[key1] = new_val

여러 값을 한꺼번에 수정할 때 확장과 동일한 update를 사용한다. 없는 key일 경우 추가된다.    dict1.update(dict2)

있는 키, 값 확인

키가 있는지 확인    val in dict1

키가 없는지 확인    val not in dict1

딕셔너리 길이 구하기    len(dict1)

뽑아보기

특정 key에 대응하는 value 얻기    dict1[key1] 또는 dict1.get(key1)

dict1.get()은 key가 존재하지 않을 때 None을 반환한다.

key가 존재하지 않을 때 미리 정해둔 default 값을 반환하게 하기    dict1.get(key1, default_val)

 

모든 요소 객체    dict1.items() -> dict_items( [ (key1, val1), (key2, val2), (key3, val3) ] )

모든 키 객체    dict1.keys() -> dict_keys( [ key1, key2, key3 ] )

모든 값 객체    dict1.values() -> dict_values( [ val1, val2, val3 ] )

이 객체들은 리스트로 변환하지 않더라도 for문 같은 기본적인 iterate 구문을 실행할 수 있다.

이 객체들을 리스트로 변환할 때 * operator을 쓰거나 list()를 사용하는데, 작은 딕셔너리일 경우엔 전자가 빠르지만 list()와 달리 내용물이 한 개일 땐 문제가 생길 수 있다.

 

읽기 쉽게 줄바꿈된 형태로 출력

from pprint import pprint as pp

pp(dict1)

확장

수정과 동일하지만 딕셔너리에 없는 key인 경우 key : value 쌍을 추가한다.    dict1[new_key] = val

두개의 딕셔너리 합치기    dict1.update(dict2) 또는 dict3 = {**dict1, **dict2}

세개 이상의 딕셔너리 합치기    dict4 = {**dict1, **dict2, **dict3}    unpacking 사용 참고 링크

삭제

존재하는 key인지 확실할 때 삭제    del dict1[key1]

존재하는 key인지 불확실할 때 삭제

try:
    del dict[key1]
    
except KeyError:
    pass

존재하는 key인지 불확실할 때 뽑아내면서 삭제    dict1.pop(key1, None)    참고 링크

복사(shallow)

dict2 = dict1.copy

dict2 = dict(dict1)

복사(deep)

from copy import deepcopy

dict2 = deepcopy(dict1)

 

+ 추가할 것: 정렬, switch 스타일로 응용하기

 

 

참고 교재1

참고 교재2

참고 링크

 

'Python' 카테고리의 다른 글

Python - Import  (0) 2021.01.17
Python - list vs tuple, set vs dictionary  (0) 2021.01.15
Python - Set  (0) 2021.01.15
Python - Tuple  (0) 2021.01.15
Python - List  (0) 2021.01.14