python dictionary value list append
딕셔너리는 키/값 (key / value)으로 이루어져 있는 자료구조이고 파이썬3.7이상의 버전부터는 순서가 입력한대로 유지된다. 내부는 해시테이블로 구현되어있다. 해시 테이블로 구현된 파이썬의 자료형을 제시하라는 질문을 받는다면 주저없이 딕셔너리라고 답할 수 있어야한다.
key에는 변화하는 값이 들어갈 수 없다. 따라서 가변적인 리스트list가 key가 될 수는 없지만 변하지 않는 튜플tuple은 key로 사용할 수 있다. 반대로 value에는 튜플과 리스트 관계없이 사용할 수 있다.
딕셔너리 주요 연산 시간 복잡도
연산 | 시간복잡도 | 설명 |
len(a) | O(1) | 요소 개수 리턴 |
a[key] | O(1) | 키 조회, value리턴 |
a[key] = value | O(1) | key, value값을 삽입 |
key in a | O(1) | 딕셔너리에 해당 키가 있는지 확인 |
대부분의 연산이 O(1)로 처리되기 때문에 시간복잡도상 효율적인 자료형이다.
리스트 : 조회할 때 인덱스의 위치를 숫자로 입력. ex) list[0]
딕셔너리 : key값을 직접 입력 ex) dict['key']
딕셔너리에는 defaultdict 라는 모듈이 있어
딕셔너리의 값을 유연하게 삽입하는 데에 도움이 된다.
defaultdict 객체
리스트 : 존재하지 않는 인덱스 조회 시 IndexError
딕셔너리 : 존재하지 않는 키 조회 시 KeyError
Defultdict : KeyError를 출력하는 대신 정해져있는 기본 값을 기준으로 key값에 대한 딕셔너리의 요소를 생성해주는 기능
>>> d = defaultdict(int)
>>> d['A'] = 0
>>> d['B'] = 1
>>> d['C'] += 1
원래대로라면 'C'라는 key값이 없어서 += 1 의 연산을 수행하면 KeyError가 출력되어야 하지만
defaultdict(int)를 통해 정해져있는 기본값 0을 기준으로 1이 더해진 값 1이 'C'라는 key의 value로 딕셔너리에 삽입된다.
{'A' : 0 , 'B' : 1, 'C' : 1}
defaultdict(list)를 이용하면 리스트형태로 value를 추가할 수 있다.
>>> for i in range(len(list)):
>>> dict[list[i][1]] += [list[i][0]]