본문 바로가기
IT/파이썬 라이브러리 (Python)

#010 파이썬 라이브러리 : collections.defaultdict 딕셔너리 생성 및 초기화 한방에

by DoitSQL 2023. 4. 5.
728x90

파이썬 라이브러리 collections.defaultdict

collections.defaultdict 딕셔너리 생성 및 초기화 한방에

collections.defaultdict 딕셔너리 생성 및 초기화 한방에

Python의 collections.defaultdict는 기본값으로 딕셔너리를 생성하기 위한 Python의 강력한 도구입니다. 누락된 키에 대한 기본값을 제공하여 코드를 단순화하는 다재다능하고 효율적인 데이터 구조입니다. defaultdict를 사용하면 보다 간결하고 효율적인 코드를 작성할 수 있고 딕셔너리에 키가 있는지 명시적으로 확인하지 않아도 됩니다.


예 제

파이선을 표현한 문장 "Life is too short, You need python."을 사용한 문자(key)와 해당 문자의 사용 횟수(value)를 딕셔너리로 만들려면 어떻게 해야 할까요?

string = "Life is too short, You need python."

char_counts = dict()
for char in string:
    if char not in char_counts:
        char_counts[char] = 0
    char_counts[char] += 1

print(char_counts)

▶ 결과

{'L': 1, 'i': 2, 'f': 1, 'e': 3, ' ': 6, 's': 2, 't': 3, 'o': 5, 'h': 2, 'r': 1, ',': 1, 'Y': 1, 'u': 1, 'n': 2, 'd': 1, 'p': 1, 'y': 1, '.': 1}

▶ 설명

딕셔너리 char_counts의 key에 해당 문자가 없으면 키로 등록하고 값은 0으로 초기화하는 코드를 사용해야 합니다. if char not in char_counts: char_counts[char] = 0 이 코드를 넣지 않으면, 키값이 없는 상태에서 += 연산을 수행하므로 KeyError 오류가 발생합니다.


 collections의 defaultdict를 이용한 방법

from collections import defaultdict

string = "Life is too short, You need python."

char_counts = defaultdict(int)
for char in string:
    char_counts[char] += 1

print(dict(char_counts))

▶ 결과

{'L': 1, 'i': 2, 'f': 1, 'e': 3, ' ': 6, 's': 2, 't': 3, 'o': 5, 'h': 2, 'r': 1, ',': 1, 'Y': 1, 'u': 1, 'n': 2, 'd': 1, 'p': 1, 'y': 1, '.': 1}

▶ 설명

이 예에서는 먼저 collections 모듈에서 defaultdict 클래스를 가져옵니다. 그런 다음 입력 문자열을 string으로 정의합니다. 그런 다음 defaultdict 생성자를 사용하여 char_counts라는 빈 사전을 만들고 기본값은 0으로 설정합니다.

 

defaultdict()의 인수로 int를 전달하여 딕셔너리 char_counts를 생성했습니다. int를 기준으로 생성한 딕셔너리 char_counts의 값은 항상 0으로 자동 초기화되므로 초기화를 위한 별도의 코드가 필요 없습니다.

 

다음으로 for 루프를 사용하여 입력 문자열의 각 문자를 반복합니다. 각 문자에 대해 += 연산자를 사용하여 char_counts의 카운트를 1씩 증가시킵니다.

 

이 루프가 완료되면 char_counts는 각 키가 입력 문자열의 문자인 사전이 되고 값은 문자가 문자열에 나타나는 횟수입니다. 이 방법에는 공백과 같은 특수 문자도 포함되며 대문자와 소문자를 구분합니다.

 

defaultdict()의 인수로는 int 외에도 list 등 여러 자료형을 사용할 수 있습니다. 자세한 내용은

https://docs.python.org/ko/3/library/collections.html#collections.defaultdict

 

collections — Container datatypes

Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.,,...

docs.python.org

를 참고하시기 바랍니다.


감사합니다.

 

Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다.

 

728x90

댓글