일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 빅데이터
- 문제풀이
- 스프링부트
- SQL
- 오라클
- 엘라스틱서치
- 토이프로젝트
- 프로그래머스
- SQL 정리
- 필기
- 스파크
- 백준
- 데이터베이스
- 모의해킹
- 프로그래밍
- 알고리즘
- 파이썬
- 해킹실습
- 데이터프로그래밍
- 기초
- 위클리챌린지
- MySQL
- 이클립스
- 리눅스마스터 2급 2차
- 문법
- 자바
- SQL 문법
- 코딩테스트
- 스프링
- c언어
- Today
- Total
개발일기
[파이썬 자료구조] 해시 - defaultdict ( ) 본문
https://hanmingi.tistory.com/159
defaultdict( ) 클래스는 위 글에서 살펴본 딕셔너리를 만드는 dict 클래스의 서브 클래스이다.
작동방식은 dict 클래스의 방식과 거의 비슷한데, defaultdict 인자로 주어진 객체의 기본값을 딕셔너리 값의 초기값으로 지정하여 사용할 수 있다.
# 사용 방법
>>> from collections import defaultdict
>>> dict = defaultdict(int)
>>> dict["key1"]
0
>>> dict
{ "key1" : 0 }
위와 같이 dict를 int형으로 지정하게 되면 값을 지정하지 않은 키는 그 값이 0으로 지정된다.
>>> dict["key2"] = "test"
>>> dict
{ "key1" : 0, "key2" : "test" }
dict의 default를 int형으로 설정 해주었다고 int형 값만 들어갈 수 있는 것은 아니다.
위처럼 값을 지정하면 해당 값으로 초기화된다.
>>> dict_list = defaultdict(list)
>>> dict_set = defaultdict(set)
int 형 뿐만 아니라 list 형태나 set 형태로도 초기화가 가능하다.
# 이걸 언제 사용하지?
https://hanmingi.tistory.com/154?category=836306
[프로그래머스] 해시 Level 3 - 베스트앨범 (python)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노
hanmingi.tistory.com
프로그래머스의 베스트 앨범 문제를 살펴보면
for i in range(len(genres)):
genre = genres[i]
play = plays[i]
if genre in play_Dict:
play_Dict[genre] += play
else:
play_Dict[genre] = play
위와 같이 장르에 따른 재생 횟수를 추가해 주는 곳이 있다.
장르가 딕셔너리에 있는지 없는지 살펴보고 있으면 1을 증가시키고 없으면 재생횟수를 대입해준다.
>>> play_Dict = defaultdict(int)
>>> play_Dict[genre] += play
라고 변경해주면 딕셔너리에 장르가 있다면 해당 값에 play 값을 더해서 다시 초기화 해주며 해당 장르값이 없다면 0으로 초기화 해준 후 play값을 더해서 선언을 해준다.
위와 같이 조건을 한번더 확인하지 않기 때문에 키의 개수를 세야하는 상황이나, 리스트, 셋의 항목을 정리할 때 사용하는 것이 효율적인 사용방법인 것 같다.
'프로그래밍 이론 > Python' 카테고리의 다른 글
[파이썬 자료구조] 힙 (heap) / 힙큐 (heapq) (0) | 2021.12.06 |
---|---|
[파이썬 자료구조] 해시 (Hash) (2) | 2021.12.01 |
Python 문법 - 문자열 뒤집기, 문자열 거꾸로 출력하기 (0) | 2021.10.12 |
빅데이터 Spark 사용해보기 - (2) Colab에서 Python 사용하기 (0) | 2021.10.05 |
빅데이터 Spark 사용해보기 - (1) Spark 란? (2) | 2021.09.27 |