파이썬

딕셔너리(dictionary)

PGNV 2021. 5. 7. 10:57

딕셔너리(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