오늘의 물낌표
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