초이준철
물낌표
초이준철
전체 방문자
오늘
어제
  • 분류 전체보기 (66)
    • 경험 (6)
    • 책으로 배우는 공부 (10)
      • 통계 학습 (4)
      • 데이터 책 (6)
    • SQL (37)
    • Python (6)
    • Tableau (7)
      • Tableau 기본 (2)
      • Tableau 빅스데이터 22여름 대학생 TWBX (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 물낌표
  • 스터디 1일차
  • TWBX 과제
  • MYSQL 테이블 구조
  • TWBX 대학생
  • mysql concat
  • 통계101x데이터 분석
  • MYSQL 집계함수
  • mysql 문자열 연결
  • mysql set
  • 데이터분석가
  • 데벨챌
  • Mysql ifnull
  • MYSQL group by
  • MYSQL insert
  • MYSQL desc
  • mysql 문자열 자르기
  • 데이터리안
  • MYSQL CASE문
  • 새빨간 거짓말 통계

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
초이준철

?!

Python

[Python] dictionary 기초와 중요 메서드 setdefault(), update(), defaultdict()

2022. 7. 10. 16:38

오늘의 물낌표

1. dictionary(딕셔너리) 개념과 활용법은?

2. 딕셔너리의 중요 메서드는 무엇이 있을까?

 

딕셔너리 사용법

우선 딕셔너리에는 key(키)와 value(값)이 들어가게 된다. 

key에 들어갈 수 있는 것은 정수, 실수, 문자열, T / F

value에 들어갈 수 있는 것은 리스트, 딕셔너리를 포함한 모든 자료형

기본적인 딕셔너리 형태

# 딕셔너리 기본형태
# {키:값, 키:값, 키:값}으로 키-값을 구분해주는 것은 콤마(,)
X = {'a':4, 'b':5, 'c':6}

1) 빈 딕셔너리 만들기

빈 딕셔너리를 만드는 방법은 크게 두가지가 있습니다.

첫번째는 x = {}

두번째는 x = dict()

# 첫 번째 x = {}

# 두 번째 x = dict()같은 경우는 다양하게 표현가능하다.

#1) dict(키=값, 키=값, 키=값) --> key에 작은 따옴표나 큰 따옴표를 할 필요가 없음. 단, key 문자열만 가능
#2) dict([(키, 값), (키, 값), (키, 값)]) --> key가 문자열이라면, 따옴표가 필요
#3) dict({키:값, 키:값, 키:값}) --> key가 문자열이라면, 따옴표가 필요

2) 딕셔너리 출력 및 키-값 변경

딕셔너리 출력하는 방법

x = {'a': 1, 'b':2, 'c':3}

# 출력 방법 []안에 원하는 key를 넣으면 value가 출력
x['a']

# 출력 값
1

 

키-값 변경 및 추가하는 방법

x = {'a':1, 'b':2, 'c':3}

# 키-값 변경하는 법은 []에 변경하고자 하는 key을 넣고, 바꾸고 싶은 value를 입력
x['a'] = 3

# 출력값
{'a':3, 'b':2, 'c':3}

# 키-값 추가하는 방법은 []에 추가하고 싶은 key를 넣고, 추가하고 싶은 value를 입력
x['d'] = 4

# 출력값
{'a':3, 'b':2, 'c':3, 'd':4}

 

3) 키 개수 구하는 방법

딕셔너리의 키 개수를 구하는 방법은 list 요소 개수를 구하는 방법과 동일하다. len() 활용

x = {'a':1, 'b':2, 'c':3, 'd':4}

# len()을 활용해서 x의 키 개수 구하기
len(x)

# 출력값
4

딕셔너리 중요 메서드

1) setdefault()

setdefault 메서드는 딕셔너리에 키-값 쌍을 추가할 수 있고, 만약 key만 입력했다면 value는 None으로 지정된다.

단, 키-값을 추가하는 것만 가능하고 이미 들어가 있는 키-값을 수정할 수 없다.

x = {'a':1, 'b':2, 'c':3, 'd':4}

# setdefault()을 활용해서 키-값 추가하기
x.setdefault('e', 5)

# 출력값 / 키-값을 설정했을 때는 값을 해당 딕셔너리에 저장하고, 값을 반환
5
{'a':1, 'b':2, 'c':3, 'd':4, 'e':5}

# setdefault()에 키만 입력했을 때
x.setdefault('e')

# 출력값
{'a':1, 'b':2, 'c':3, 'd':4, 'e':None}

2) update()

update()는 키-값을 추가 및 변경이 가능하다. 키-값 쌍을 콤마로 구분하면 여러 키-값 쌍을 한 번에 변경 및 추가 가능

단, key가 문자열일 때만 가능하고 key가 숫자형이라면 update({})로 활용해야 한다.

x = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}

# key가 문자열일 때 update()로 값 변경하기
x.update('b'=7)

# 출력값
{'a':1, 'b':7, 'c':3, 'd':4, 'e':5}
----------------------------------------
y = {1:4, 'a':5, 'b':6, 4:6}

# key가 숫자형일 때 update()로 값 변경하기
y.update({1:5})

# 출력값
{1:5, 'a':5, 'b':6, 4:6}

# 키-값을 콤마로 구분해서 한 번에 추가 및 변경해보기
y.update({1:5, 'b':7})

# 출력값
{1:5, 'a':5, 'b':7, 4:6}

3) defaultdict()

기본적으로 딕셔너리에서 없는 키를 출력하면 아래와 같이 error가 뜬다.

x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# 없는 key 출력하면 error 발생
x['z']
>> error

defaultdict는 없는 key를 출력했을 때 기본값을 출력하게 만들어주는 메소드이다. (error 발생하지 않고 기본값 출력)

단, collection 모듈에서 defaultdict를 가져와야 한다!

from collection import defaultdict

z = defaultdict(int)
>> z['y'] # 없는 key 출력해보기
>> 0 # 기본값 0 출력

여기서 잠깐! 왜 defaultdict() 안에 int를 넣어줬을까요?

없는 key를 출력했을 때 '기본값'이 나온다고 했습니다. 여기서 int 는 실수나 문자를 정수로 변환하는 역할을 하지만, int에 아무것도 넣지 않고 호출하면 0을 반환하게 됩니다.

만약 여러분들이 기본값이 0이 아닌 다른 값을 출력하고 싶으시다면 아래와 같이 기본값 생성 함수를 입력하면 됩니다. 

from collections import defaultdict

# 기본값 생성 함수 입력
z = defaultdict(lamda : 'python')
>> z['a'] # 없는 key 출력
>> 'python' # 기본값 출력

 

+ 추가 내용

1) 딕셔너리 키-값 삭제 pop(), del

x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# pop(삭제하고 싶은 key 입력)
x.pop('a')
>> 1 # value를 반환하고 x에서 'a'가 삭제
>> {'b': 2, 'c': 3, 'd': 4, 'e': 5}

# del x[삭제하고 싶은 key 입력]
del x['b']
>> {'a':1,'c': 3, 'd': 4, 'e': 5} # 삭제되는 key의 value 반환 X

2) 키-값 불러오는 방법 items(), keys(), values()

x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

# 키-값 모두 불러오는 방법
x.items()
>> dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])

# 키만 불러오는 방법
x.keys()
>> dict_keys(['a', 'b', 'c', 'd', 'e'])

# 값만 불러오는 방법
x.values()
>> dict_values([1, 2, 3, 4, 5])

# for문으로 키-값 모두 출력하기

for key, value in x.items():
	print(key, value)
>>
a 1
b 2
c 3
d 4
e 5
저작자표시 (새창열림)
    'Python' 카테고리의 다른 글
    • [Python] 일반함수와 lambda함수 쉽게 알아보기 (feat. map / filter)
    • [Python] Pandas 고유한 값 출력하기 feat. unique(), nunique(), value_counts()
    • [Python] 해당 칼럼에서 내가 원하는 문자열 찾아내기 str.contains()
    • [Python] list와 Numpy array 차이 (+ numpy array 언제 쓰는가?)
    초이준철
    초이준철
    WNWA

    티스토리툴바