리셋 되지 말자

[python 문법] dict 본문

Python

[python 문법] dict

kyeongjun-dev 2021. 6. 8. 17:27

dict의 주요 연산 시간 복잡도

  • len(a) : O(1) => dict의 요소의 개수 리턴
  • a[key] : O(1) => 키 조회
  • a[key] = value : O(1) => 키, 값 삽입
  • key in a : O(1) => dict에 키가 존재하는지 확인

 

파이썬 버전별 차이

  • 3.7+ : dict 입력 순서 유지
  • 3.6+ : dict 메모리 사용량 20% 감소

 

존재하지 않는 key 조회

존재하지 않는 key를 조회할 경우 오류가 발생한다.

# key 가 있는지 확인
1 in d.keys()
1 in d:

# value 가 있는지 확인
1 in d.values()
d.get(1) # value가 없으면 None 반환

 

반복문 에서의 key, value 조회

for key, value in d.items():
	print(key, value)

 

key 삭제

del d[1]

 

출력

d.keys()
d.values()

 

딕셔너리 모듈 - defaultdict 객체

defaultdict 객체는 존재하지 않는 키를 조회할 경우, 에러 메시지를 출력하는 대신 디폴트 값을 기준으로 해당 키에 대한 딕셔너리 아이템을 생성해준다.

import collections

d = collections.defaultdict(int)

d['A'] = 1
d['B'] = 2
print(d)

d['C'] += 1

print(d)

# 출력
defaultdict(<class 'int'>, {'A': 1, 'B': 2})
defaultdict(<class 'int'>, {'A': 1, 'B': 2, 'C': 1})

 

 

딕셔너리 모듈 - Counter 객체

Counter객체는 아이템에 대한 개수를 계산해 딕셔너리 형태로 리턴한다.

import collections

l = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

d = collections.Counter(l)

print(d)

# 출력
Counter({5: 5, 4: 4, 3: 3, 2: 2, 1: 1})

 

가장 빈도수가 가장 높은 item 들을 추출할 수도 있다.

import collections

l = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

d = collections.Counter(l)

print(d)

print(d.most_common(2))

# 출력
[(5, 5), (4, 4)]

 

 

딕셔너리 모듈 - OrderedDict 객체

파이썬 3.6 이하의 인터프리터 시 사용. 3.7 이상에서는 기본적으로 dict의 입력 순서가 보장됨

import collections

d = collections.OrderedDict()

d[1] = 1
d[3] = 3
d[2] = 2

print(d)

# 출력
OrderedDict([(1, 1), (3, 3), (2, 2)])

'Python' 카테고리의 다른 글

람다 표현식  (0) 2021.06.13
list 뒤짚기 - reverse()  (0) 2021.06.13
[python 문법] list  (0) 2021.06.08
[python 문법] is와 ==  (0) 2021.04.28
[python 공부] 파이썬 객체  (0) 2021.04.28
Comments