0Pricing
Python Academy · 강의

defaultdict

딕셔너리 값을 자동으로 초기화하기

defaultdict은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

없는 키 문제

일반 dict에서는 존재하지 않는 키에 접근하면 KeyError가 발생합니다. 값을 조금씩 쌓아 가고 싶을 때 불편합니다.

d = {}
try:
    d['x'].append(1)
except KeyError as e:
    print('KeyError:', e)

defaultdict 사용하기

collections의 defaultdict는 없는 키에 사용할 기본값을 만들어 내는 생성 함수를 받습니다. from collections import defaultdict로 가져옵니다.

from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))

int로 개수 세기

defaultdict(int)에서는 없는 키의 기본값이 0이므로 먼저 확인하지 않고도 값을 증가시킬 수 있습니다.

from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
    counts[ch] += 1
print(dict(counts))

list로 그룹화하기

defaultdict(list)는 새 키에 빈 리스트를 만들어 주므로 항목을 그룹으로 묶기에 적합합니다.

from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
    groups[w[0]].append(w)
print(dict(groups))

set으로 모으기

키마다 고유한 값만 저장하려면 defaultdict(set)을 사용합니다. 중복 항목은 자동으로 제거됩니다.

from collections import defaultdict
seen = defaultdict(set)
pairs = [('a', 1), ('a', 1), ('a', 2), ('b', 3)]
for k, v in pairs:
    seen[k].add(v)
print(dict(seen))

생성 함수는 호출 가능해야 합니다

인수는 인수를 받지 않고 기본값을 반환하는 호출 가능한 객체여야 합니다. int, list, set, dict는 호출하면 빈 값을 반환하므로 모두 사용할 수 있습니다.

from collections import defaultdict
print(int())
print(list())
print(set())

lambda로 사용자 지정 기본값 만들기

lambda와 같은 인수가 없는 호출 가능한 객체를 전달해 사용자 지정 기본값을 반환하도록 할 수 있습니다.

from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))

중첩 defaultdict

생성 함수가 자체적으로 defaultdict를 만들도록 하면 수동 설정 없이 중첩 구조를 만들 수 있습니다.

from collections import defaultdict
table = defaultdict(lambda: defaultdict(int))
table['fruit']['apples'] += 3
table['fruit']['pears'] += 2
print(table['fruit']['apples'])
print(table['fruit']['pears'])

접근하면 키가 생성됩니다

주의해야 할 점이 있습니다. 없는 키를 단순히 읽기만 해도 기본값과 함께 키가 삽입됩니다. 접근한 후에는 사전에 해당 키가 존재합니다.

from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))

삽입하지 않고 확인하기

키를 만들지 않고 확인하려면 .get() 메서드나 in 연산자를 사용합니다. 둘 다 생성 함수를 실행하지 않습니다.

from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))

일반 dict로 되돌리기

일반 사전이 필요할 때는 defaultdict를 dict()로 감쌉니다. 예를 들어 함수에서 반환하거나 깔끔하게 출력하기 전에 사용할 수 있습니다.

from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)

빠른 확인

defaultdict에 전달하는 인수는 무엇을 나타냅니까?

복습: defaultdict

핵심 내용:

  • defaultdict(factory)는 없는 키에 사용할 값을 자동으로 만듭니다.
  • int는 0(개수 세기), list는 [](그룹화), set은 빈 집합(고유한 값으로 그룹화)을 제공합니다.
  • 생성 함수는 lambda를 포함한, 인수를 받지 않는 모든 호출 가능한 객체가 될 수 있습니다.
  • 없는 키를 읽으면 키가 삽입됩니다. 안전하게 확인하려면 .get()이나 in을 사용합니다.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
    g[w[0]].append(w)
print(dict(g))

자주 묻는 질문

“defaultdict” 강의는 무료인가요?

네 — “defaultdict” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“defaultdict”에서 뭘 배우나요?

딕셔너리 값을 자동으로 초기화하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“defaultdict” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple과 OrderedDict
← Python Academy(으)로 돌아가기