[Python] 딕셔너리와 관련 함수

cdwde·2021년 5월 6일
0

🎈 dictionary

  • immutable한 키와 mutable한 값으로 맵핑되어 있는 순서가 없는 집합

  • 연관 배열 혹은 해시라고 함

  • key를 통해 value를 얻음

  • key는 고유한 값이기 때문에 중복되는 key값을 설정하면 하나 제외하고 나머지 무시

딕셔너리 만들기

dic = dict()
dic = {}

요소 추가하기

dic = {1 : 'a'}
dic[2] = 'b'	#key: 2, value: b
print(dic)

#출력 결과
#{1 : 'a', 2 : 'b'}

요소 삭제하기

dic = {1 : 'a', 2 : 'b'}
del dic[1]
print(dic)

dic.pop(2)
print(dic)

#출력 결과
#{2 : 'b'}
#{}

key로 value 얻기

dic = {1 : 'a', 2 : 'b'}
print(dic[1])
print(dic[2])

#출력 결과
#a
#b

keyError
dictionary에 없는 key에 접근하면 keyError 발생

dic = {1 : 'a', 2 : 'b'}
print(dic[3])	#에러 발생

🎈 dictionary 관련 함수

keys

key 리스트 만들기

dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.keys())

#출력 결과
#dic_keys(['one', 'two', 'three'])

values

value 리스트 만들기

dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.values())

#출력 결과
#dic_values([1, 2, 3])

items

key, value 쌍 얻기

dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.items())

#출력 결과
#dic_items([('one', 1), ('two', 2), ('three', 3)])

get

key로 value 얻기

dic = {'one': 1, 'two': 2, 'three': 3}
print(dic.get('one'))
print(dic.get('four'))		#찾으려는 key가 없으면 None 반환
print(dic.get('four', 4))	#찾으려는 key가 없을 때 default값 갖고 오게 하기

#출력 결과
#1
#None
#4

in

key가 딕셔너리 안에 있는지 조사

dic = {'one': 1, 'two': 2, 'three': 3}
print('one' in dic)
print('four' in dic)

#출력 결과
#True
#False

update

수정하기

  • update(key=value)는 키가 문자열일 때만 사용할 수 있음
dic = {'one': 1, 'two': 2, 'three': 3}
dic.update(one=100)
print(dic)

#출력 결과
#{'one': 100, 'two': 2, 'three': 3}
  • 키가 숫자일 경우 딕셔너리/리스트/튜플 통해 수정
dic = {1: 'one', 2: 'two', 3: 'three'}
dic.update({1: 'ONE'})
print(dic)

dic.update([[1, 'one']])
print(dic)

#출력 결과
#{1: 'ONE', 2: 'two', 3: 'three'}
#{1: 'one', 2: 'two', 3: 'three'}

clear

모든 key, value 삭제하기

dic = {'one': 1, 'two': 2, 'three': 3}
dic.clear()

setdefault

setdefault(key[, default])

  • default의 기본값은 None
  • key가 딕셔너리에 있으면 해당 값을 돌려주고 없으면 default 값을 key에 삽입 후 default를 돌려줌
dic = {1: 'one', 2: 'two'}
print(dic.setdefault(1))

#출력 결과
#one
dic = {}
dicKey = ['one', 'two', 'three']
for key in dicKey:
  dic.setdefault(key, 0)

print(dic)

#출력 결과
#{'one': 0, 'two': 0, 'three': 0}

defaultdict

  • collections의 defaultdict

  • 인자로 주어진 객체의 기본값을 딕셔너리의 초기값으로 지정

  • 값을 지정하지 않은 키는
    기본값이 int일 때 0,
    리스트일 때는 빈 리스트,
    set이면 set()으로 초기화

  • key에 명시적으로 값을 지정하면 그 값이 지정됨

  • setdefault보다 빠름

from collections import defaultdict
dic = defaultdict(int)
print(dic)

dic['key1']
print(dic)

dic['key2'] = 2
print(dic)

#출력 결과
#defaultdict(<class 'int'>, {})
#defaultdict(<class 'int'>, {'key1': 0})
#defaultdict(<class 'int'>, {'key1': 0, 'key2': 2})

default(int) 활용 예제

from collections import defaultdict
letters = 'hello'
dic = defaultdict(int)
for l in letters:
    dic[l] += 1
print(dic)

#출력 결과
#defaultdict(<class 'int'>, {'h': 1, 'e': 1, 'l': 2, 'o': 1})

참고
https://wikidocs.net/16
https://wikidocs.net/33177
https://appia.tistory.com/218
https://dojang.io/mod/page/view.php?id=2307
https://dongdongfather.tistory.com/69

0개의 댓글