딕셔너리(dictionary)
리스트가 숫자 index로 위치를 참고하여 사용하는 자료형이라면 딕셔너리(dict)는 key를 사용하여 값을 불러오는 자료형입니다.
말 그대로 사전과 같은 느낌입니다.
선언은 다음과 같이 할 수 있습니다.
- {key1:value1, key2:value2}
dictionary 선언 예 | 특징 |
dict = {"강아지":"dog", "고양이":"cat", "새":"bird"} | key : value 쌍의 요소를 저장 요소 추가, 변경, 삭제, 검색 가능 |
empty_dict = dict()
print(empty_dict)
#출력: {}
ani = {
'개' : ['dog', 'puppy'],
'고양이' : 'cat',
1 : 'one',
2 : 'two'
}
print(type(ani))
#출력: <class 'dict'>
리스트의 index와 비슷하게 여기서는 key를 이용하여 value를 가져올 수 있습니다.
print(ani['개'])
#출력: ['dog', 'puppy']
print(ani[1]) # 여기서 사용한 1은 index가 아니라 key입니다.
#출력: one
비슷하게 key를 사용하여 가져오지만 get을 사용하는 방법도 있습니다.
print(ani.get('개'))
#출력: ['dog', 'puppy']
print(ani.get('고양이'))
#출력: cat
그리고 각각의 key 또는 value를 따로 추출하여 사용할 수도 있습니다.
print(ani.keys())
#출력: dict_keys(['개', '고양이', 1, 2])
print(ani.values())
#출력: dict_values([['dog', 'puppy'], 'cat', 'one', 'two'])
추가와 수정은 같은 방식으로 이뤄집니다.
ani['개'] = 'dog/puppy'
print(ani)
#출력: {'개': 'dog/puppy', '고양이': 'cat', 1: 'one', 2: 'two'}
ani['말'] = 'horse'
print(ani)
#출력: {'개': 'dog/puppy', '고양이': 'cat', 1: 'one', 2: 'two', '말': 'horse'}
또는 리스트의 extend처럼 여러 개를 동시에 추가하는 방법도 있습니다.
- update
ani.update({'원숭이':'monkey', '사자':'lion'})
print(ani)
#출력: {'개': 'dog/puppy', '고양이': 'cat', 1: 'one', 2: 'two', '말': 'horse', '원숭이': 'monkey', '사자': 'lion'}
삭제
dict는 순서가 없는 자료형이었으나 Python 3.7부터는 순서가 생겼습니다. 바로 입력하고 추가한 순서대로로 정렬된다는 점입니다.
그렇기에 key를 이용하여 특정값을 제거하거나, 마지막 원소를 pop하는 연산을 할 수 있습니다.
print((ani).pop('사자'))
#출력: lion
print(ani)
#출력: {'개': 'dog/puppy', '고양이': 'cat', 1: 'one', 2: 'two', '말': 'horse', '원숭이': 'monkey'}
print((ani).popitem()) # popitem은 마지막 제거할 수 있습니다.
#출력: ('원숭이', 'monkey')
print(ani)
#출력: {'개': 'dog/puppy', '고양이': 'cat', 1: 'one', 2: 'two', '말': 'horse'}
d = {'cat': 'cute', 'dog': 'furry'} # 새로운 딕셔너리를 만듭니다
print (d['cat']) # 딕셔너리의 값을 받음; 출력 "cute"
print ('cat' in d) # 딕셔너리가 주어진 열쇠를 가졌는지 확인; 출력 "True"
d['fish'] = 'wet' # 딕셔너리의 값을 지정
print (d['fish']) # 출력 "wet"
print (d.get('monkey', 'N/A')) # 딕셔너리의 값을 받음. 존재하지 않는 다면 'N/A'; 출력 "N/A"
print (d.get('fish', 'N/A')) # 딕셔너리의 값을 받음. 존재하지 않는 다면 'N/A'; 출력 "wet"
print(d) #출력 {'cat': 'cute', 'dog': 'furry', 'fish': 'wet'}
del d['fish'] # 딕셔너리에 저장된 요소 삭제/fish와 wet 사라짐
print(d) #출력 {'cat': 'cute', 'dog': 'furry'}
print (d.get('fish', 'N/A')) # "fish"는 더 이상 열쇠가 아님; 출력 "N/A"
딕셔너리 반복
d = {'person': 2, 'cat': 4, 'spider': 8}
for animal in d:
legs = d[animal]
print ('%s는 %d개 다리를 갖고 있습니다.' % (animal, legs))
# 출력 "person는 2개 다리를 갖고 있습니다.
cat는 4개 다리를 갖고 있습니다.
spider는 8개 다리를 갖고 있습니다.", 한 줄에 하나씩 출력.
딕셔너리 comprehensions:
리스트 comprehensions과 유사한 딕셔너리 comprehensions을 통해 손쉽게 딕셔너리를 만들 수 있습니다
nums = [0, 1, 2, 3, 4]
even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}
print (even_num_to_square) # 출력 "{0: 0, 2: 4, 4: 16}"
'파이썬' 카테고리의 다른 글
튜플 (Tuple) (0) | 2021.05.07 |
---|---|
리스트 (list) (0) | 2021.05.07 |
슬라이싱 (Slicing) (0) | 2021.05.07 |
문자열(String) : 문자와 문장 (0) | 2021.05.07 |
비교연산자 (0) | 2021.05.07 |