공부 자료실/파이썬(Python)

파이썬(Python) - 딕셔너리(Dictionary)

자료수집중 2020. 7. 9.
반응형

딕셔너리(Dictionary)는 사전이란 뜻으로 키(Key)와 값(Value)을 한쌍으로 저장합니다. ex) 'name' : '홍길동'

키(Key)와 값(Value)처럼  대응하는 구조를 해시(hash)라고 합니다.

 

딕셔너리는 리스트나 튜플과 다르게 키를 이용해서 값을 얻어야 합니다.

딕셔너리의 기본형은 다음과 같습니다.

변수명 = {key1:value1, key2:value2, key3:value3, ...}

예제로 살펴보겠습니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
print(color)

살펴보면

Key Value(값)
red 빨강
blue 파랑
black 검정

값에는 정수, 실수, 문자열 말고도 리스트, 튜플도 가능합니다.

table = {'2단': (2, 4, 6, 8, 10, 12, 14, 16, 18), '3단': (3, 6, 9, 12, 15, 18, 21, 24, 27)}
people = {'홍길동': [23, '01012345678', '남'], '영희': [23, '01012345678', '여']}

 

키는 중복되면 안 됩니다. 하지만 값은 중복돼도 상관이 없습니다.

키는 한번 선언하면 변경이 불가능합니다. 읽기 전용입니다.

 

값을 읽는 방법은

table = {2: (2, 4, 6, 8, 10, 12, 14, 16, 18), 3: (3, 6, 9, 12, 15, 18, 21, 24, 27)}

print(table[2])

딕셔너리이름[키]로 해당 키의 값을 읽어올 수 있습니다.

[] 안의 값이 리스트나 튜플처럼 인덱스가 아닌 키가 들어가야 합니다.

만약 찾는 키가 없다면 예외가 발생합니다. 

예외가 발생하는 게 싫다면 get()을 사용하면 찾는 키가 없어도 예외가 발생하지 않습니다.

table = {2: (2, 4, 6, 8, 10, 12, 14, 16, 18), 3: (3, 6, 9, 12, 15, 18, 21, 24, 27)}

print(table.get(4))
print(table.get(4, '입력하신 키는 존재하지 않습니다'))

get()은 첫 번째 인수는 키입니다. 두 번째 인수는 생략하면 None 이 반환되고 입력하면 원하는 값을 반환할 수 있습니다.

 

만약 키 또는 값만 따로 보고 싶다면 가능합니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
print(color.keys())
print(color.values())
print(color.items())

.keys()는 딕셔너리의 모든 키를 리스트형으로 반환합니다.

.values()는 딕셔너리의 모든 값을 리스트형으로 반환합니다.

.items()은 딕셔너리의 키와 값을 튜플형으로 반환합니다.

 

 

딕셔너리는 수정, 추가, 삭제가 가능한 자료형입니다.

먼저 수정은 딕셔너리이름[키]에 대입만으로 가능합니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
color['blue'] = '노랑'
print(color)


people = {'홍길동': [23, '01012345678', '남'], '영희': [23, '01012345678', '여']}
people['홍길동'][0] = 35
print(people)

처음 선언한 값에서 새롭게 대입한 값으로 수정된 결과를 보실 수 있습니다.

 

추가도 간단하게 할 수 있습니다.

딕셔너리이름[새로운 키] = 값으로 새롭게 추가가 가능합니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
print(color)
color['yellow'] = '노랑'
print(color)

요소에 존재하지 않는 키에 값을 대입하면 딕셔너리는 새롭게 추가합니다.

 

수정과 추가는 딕셔너리의 메서드로도 가능합니다.

.setdefault(키, 값)은 새로운 요소를 추가할 수 있습니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
color.setdefault('yellow', '노랑')
print(color)
color.setdefault('green')
print(color)

.setdefault()은 값을 생략할 수 있습니다. 생략하게 되면 값에 None이 저장됩니다.

 

.update(키= 값)은 추가와 수정이 가능합니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
color_2 = {'white': '하얀', 'green': '초록'}
print(color)
color.update(red='검정')
print(color)
color.update(pink='분홍')
print(color)
color.update(color_2)
print(color)

딕셔너리에 존재하는 키와 값을 입력하면 값이 수정됩니다.

딕셔너리에 존재하지 않는 키와 값을 입력하면 요소가 추가됩니다.

다른 딕셔너리를 인수로 넣어주면 이어서 추가됩니다.단 주의할 점은 예제를 살펴보면 키를 입력할 때 'red'가 아닌 red로 해야 합니다. ''나""가 없이 입력해야 합니다. 또한 ,가 아니냐 =로 값을 입력해야 합니다.

 

삭제도 알아보겠습니다.

먼저 리스트에서도 사용했던 .pop()

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
print(color.pop('blue'))
print(color)

.pop()는 리스트처럼 키를 입력하면 입력한 키의 요소를 삭제합니다. 삭제할 때 해당 키의 값을 반환합니다.

 

다음으로 독특한 삭제 메서드가 한가지 있습니다.

바로 .popitem()입니다.이 메서드는 파이썬 버전에 따라서 결과가 조금 다릅니다.3.6 미만은 임의의 키를 삭제합니다. 3.6부터는 마지막 키를 삭제합니다.현재 예제는 3.8이라 맨 마지막 값이 삭제됩니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
print(color.popitem())
print(color)

 

그리고 del을 이용해서도 삭제가 가능합니다.

color = {'red': '빨강', 'blue': '파랑', 'black': '검정'}
del color['blue']

del 딕셔너리이름[키]로 해당 키의 요소를 삭제할 수 있습니다.

 

 

 

 

댓글