collections.defaultdict()에 대해

개발공부를해보자·2025년 1월 5일

공부 정리

목록 보기
7/32

defaultdict()

기본 dict 은 존재하지 않는 key를 조회하면 에러가 발생한다. 따라서 코드 작성 시 key의 존재 여부를 고려해야하는 불편함이 있다. 하지만 defaultdict()을 사용하면 이런 불편함을 해소할 수 있다. key를 조회했을 때 없다면 기본값으로 0, ""(빈 문자열), [] 등을 사용할 수 있다.

기본 dict 사용 예시

words = ["apple", "banana", "apple", "orange", "banana"]
counter = {}
for word in words:
    if word in counter:
        counter[word] += 1
    else:
        counter[word] = 1
print(counter)  # Output: {'apple': 2, 'banana': 2, 'orange': 1}

collections.defaultdict() 사용 예시

from collections import defaultdict
words = ["apple", "banana", "apple", "orange", "banana"]
counter = defaultdict(int)
for word in words:
    counter[word] += 1
print(counter)  # Output: defaultdict(<class 'int'>, {'apple': 2, 'banana': 2, 'orange': 1})

아래 내용은 GPT의 도움을 받아 정리한 내용입니다.

collections.defaultdict()에 대해

from collections import defaultdict

# 1. 기본값이 0인 defaultdict
counter = defaultdict(int)
counter['a'] += 1  # 키 'a'가 없으면 기본값 0 생성 후 1 더함
print(counter)  # Output: defaultdict(<class 'int'>, {'a': 1})

# 2. 기본값이 빈 리스트인 defaultdict
grouping = defaultdict(list)
grouping['a'].append(1)  # 키 'a'에 값 추가
grouping['a'].append(2)
print(grouping)  # Output: defaultdict(<class 'list'>, {'a': [1, 2]})

# 3. 기본값이 빈 문자열인 defaultdict
string_default = defaultdict(str)
print(string_default)  # Output: defaultdict(<class 'str'>, {})
print(string_default['missing'])  # 키가 없으면 기본값 "" 생성
# Output: ""

# 4. 사용자 정의 함수로 기본값 설정
def default_value():
    return 42
custom_default = defaultdict(default_value)
print(custom_default)  # Output: defaultdict(<function default_value at ...>, {})
print(custom_default['missing'])  # 키가 없으면 기본값 42 생성
# Output: 42

# 5. lambda로 기본값 설정
default_lambda = defaultdict(lambda: "default")
print(default_lambda)  # Output: defaultdict(<function <lambda> at ...>, {})
print(default_lambda['unknown'])  # 키가 없으면 기본값 "default" 생성
# Output: defaultdict(<function <lambda> at ...>, {'unknown': 'default'})

# 6. 단어 개수 세기
words = ["apple", "banana", "apple", "orange", "banana", "banana"]
word_count = defaultdict(int)
for word in words:
    word_count[word] += 1
print(word_count)  
# Output: defaultdict(<class 'int'>, {'apple': 2, 'banana': 3, 'orange': 1})
profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글