본문 바로가기

Python

딕셔너리(Dictionary) 사용법 정리

지난번 포스팅에서는 리스트(list)에 대한 내용을 정리했다.

 

이번 포스팅에서는 딕셔너리(Dictionary)에 대한 기본적인 내용을 정리해보려고 한다. 

 

딕셔너리는 사전처럼 key와 value로 이루어져 있으며, list처럼 순서가 있지는 않다. 

 

딕셔너리와 관련된 내장함수와 관련 코드를 보면 쉽게 이해할 수 있을 것이다. 

 

1.  딕셔너리에 내용 추가하기

day1 = ['월', '화', '수', '목', '금', '토', '일']
day2 = ['mon', 'tue', 'wed', 'thu', 'fir', 'sat', 'sun']
dic = {}     # 비어있는 딕셔너리를 정의
for i,k in enumerate(day1):        #enumerate하면 index와 component가 반환
        tmp = day2[i]       # i는 day1의 index를 의미,  tmp는 day2의 요소
        dic[k] = tmp         # day1의 인덱스가 키, day2가 값
print(dic)                      # 이 코드는 두개의 리스트를 1:1로 매칭할때 유용할 것 같음.

 

코드 실행 결과

{'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}

2. 딕셔너리의 특정 요소를 변경

days = {'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}
print('변경 전 : ', days)
days['월'] = 'monday'      # dictionary key 중 '월'에 대응 되는 값을 'monday'로 바꿔줌
print('변경 후 : ', days)
print()
num = {(1,'하나') : 1, (2,2) : 2, (3,3):3}
print('변경 전 : ', num[1,'하나'])      # dictionary key가 2개인 경우,이런식으로 접근이 가능함.
num[1,1] = 100
print('변경 후 : ', num[1,'하나'])

 

코드 실행 결과

변경 전 : {'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}
변경 후 : {'월': 'monday', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}

변경 전 : 1
변경 후 : 1

3. 딕셔너리의 특정 요소값 삭제 (del)

days = {'월': 'mon',  '화':  'tue',  '수': 'wed',  '목': 'thu',  '금': 'fir',  '토': 'sat', '일': 'sun'}
print('삭제 전 : ', days)
del days['월']
print('삭제 후 : ', days)       #  '월':'mon' 부분이 삭제됨

 

코드 실행 결과

삭제 전 : {'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}
삭제 후 : {'화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}

4. 딕셔너리 모든 요소 삭제( clear() )

days = {'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}
print('삭제 전 : ', days)
days.clear()
print('삭제 후 : ', days)      # 모든 요소가 삭제되어 비어있는 dictionary가 출력됨.

 

코드 실행 결과

삭제 전 : {'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}
삭제 후 : {}

5. 딕셔너리에서 키만 추출하기( keys() )

days = {'월': 'mon', '화': 'tue', '수': 'wed', '목': 'thu', '금': 'fir', '토': 'sat', '일': 'sun'}
key_example = days.keys()                             # dict_key를 반환함
print('키 추출 : ', type(key_example))              
print('키를 리스트화 : ', list(key_example))       # dict_key를 list로 변환하고 그 결과를 출력
for k in key_example:
      print('Key : %s,   Value : %s' %(k,days[k]))      # %s 두개는 각각 %(k, days[k])와 대응됨. 

 

코드 실행 결과

키 추출 : <class 'dict_keys'>
키를 리스트화 : ['월', '화', '수', '목', '금', '토', '일']
Key : 월, Value : mon
Key : 화, Value : tue
Key : 수, Value : wed
Key : 목, Value : thu
Key : 금, Value : fir
Key : 토, Value : sat
Key : 일, Value : sun

6. 딕셔너리에서 값만 추출하기( values() )

result = {'민수' : 100, '철수': 90, '영수':80}
value_example = result.values()                 # 반환된 dict_value를 value_example에 저장
print('값 추출 : ', value_example)   

value_example = list(value_example)        # value_example을 리스트화
print('값을 리스트화 : ', value_example)
print('평균 성적은 :',sum(value_example)/len(value_example),'점 입니다.')

 

코드 실행 결과

값 추출 : dict_values([100, 90, 80])
값을 리스트화 : [100, 90, 80]
평균 성적은 : 90.0 점 입니다.

7. 딕셔너리의 모든 요소를 추출하기

result = {'민수' : 100, '철수': 90, '영수':80}
new_result = result.items()
print(list(new_result))       # key와 value를 튜플화해서 리스트로 바꿈.
print(list(result))                # dictionary를 그냥 list화 하면 key만 남음.

 

코드 실행 결과

[('민수', 100), ('철수', 90), ('영수', 80)]
['민수', '철수', '영수']

8. 딕셔너리에 특정 Key가 있는지 확인하기 

result = {'minsu' : 100, 'dana': 90, 'kim':80}
name = input('이름을 입력하세요')    # 데이터 입력창이 만들어짐. 입력창에 minsu를 입력하면
if name in result:
      print('%s의 점수는 %d입니다.' %(name, result[name]))
else:
      print('해당 학생의 성적은 없습니다.')

 

코드 실행 결과

이름을 입력하세요minsu
minsu의 점수는 100입니다.