멀리 보는 연습

Python_딕셔너리 본문

빅데이터 분석 서비스/Python

Python_딕셔너리

푸실리 2021. 6. 17. 22:41

딕셔너리란?

key와 value의 대응관계로 구성되어 있는 '연관 배열' 자료형으로, 리스트나 튜플처럼 순차적으로 요구값들을 구하지 않고,  key를 통해 value를 얻는다.

 

* 딕셔너리 생성

dic1={'name':'로또', 'age':'20', 'phone':'000-0000-0000'}

위에서 key는 각각 name, age, phone이고, value는 로또, 20, 000-0000-0000 이다.

 

 

* 딕셔너리 값 가져오기

print(dic1['name'])
print(dic1['age'])
print(dic1['phone'])

 

print(dic1.get('name'))
print(dic1.get('age'))
print(dic1.get('phone'))

 

* 딕셔너리 값 추가

dic1['height'] = 169
dic1['like'] = 'money'

* 딕셔너리 값 삭제

del dic1['like']

 

* value  값 수정

dic1['age'] = 21

 

* 딕셔너리의 key 값 모두 가져오기

dic1.keys()
>> dict_keys(['name', 'age', 'phone', 'height', 'birth'])

* 리스트 형태로 바꾸기

list(dic1.keys())
>> ['name', 'age', 'phone', 'height', 'birth']

 

 

* 딕셔너리의 value 값 모두 가져오기

dic1.values()
>> dict_values(['세연쌤', 21, '000-0000-0000', 169, '03/20'])

 

* for 문 - 딕셔너리의 key 값 가져오기

for key in dic1.keys():
    print(key)

 

* for 문 - 딕셔너리의 value 값 가져오기

for value in dic1.values():
    print(value)

 

* key와 value의 쌍을 튜플로 묶은 값

dic1.items()
 >> dict_items([('name', '세연쌤'), ('age', '20'), ('phone', '000-0000-0000')])

 

 

* 반복문을 활용하여 딕셔너리의 key와 value를 접근

for k,v in dic1.items():
    print(k,v)
    ↓
name 세연쌤
age 20
phone 000-0000-0000
for k in dic1.items():
    print(k)
    ↓
('name', '세연쌤')
('age', '20')
('phone', '000-0000-0000')

 

 

* 딕셔너리 in 키워드

- in - key 에 한해서 동작한다. (중복 안됨)

-  key가 딕셔너리 안에 있는지

'name' in dic1
>> True

 

 

* 딕셔너리 전체 삭제

dic1.clear()

 

** 예제 1

score_dic = {'홍길동':{'수학':99,'영어':80,'국어':75},
             '김미정':{'영어':67,'국어':87,'수학':55},
             '정수진':{'수학':67,'국어':41,'영어':23}}
math = 0
korean = 0
english = 0

score = list(score_dic.values())
for i in score :
    math += i['수학']
    korean += i['국어']
    english += i['영어']
    
score_sum = {'수학':math, '국어':korean, '영어': english}
print(score_sum)

일단, 홍길동과 김미정, 정수진의 점수들만 따로 리스트로 만든 다음, 그 점수들 속에서 국어,수학,영어로 나누어 합계를 구해야 한다. 

 

1STEP > 홍길동, 김미정, 정수진의 점수 리스트로 만들기

score = list(score_dic.values())

 

2STEP > 그 점수들 속에서 수학, 국어, 영어로 나누어 합계 구하기

for i in score :
    math += i['수학']
    korean += i['국어']
    english += i['영어']

 

이 부분이 많이 헷갈렸는데, 그 이유는 key를 사용해서 value를 구하는 방법이 익숙치 않았기 때문이다. 

grade = {'yeri' : 10, 'taeri' : 20}
grade['yeri']  >> 10 
grade['taeri'] >> 20

위의 예시처럼 key값을 이용해서  value 값을 구하려면 딕셔너리명['key명'] 으로 구해야 하는데, 그걸 몰랐다.

꼭 기억하귀

 

** 딕셔너리는 순서가 없기 때문에 인덱싱, 슬라이싱이 필요 없다. 

 

 

 

해당 수업 및 예제는 스마트인재개발원에서 진행되었습니다.

www.smhrd.or.kr

'빅데이터 분석 서비스 > Python' 카테고리의 다른 글

Python_튜플  (0) 2021.06.17
Python_리스트  (0) 2021.06.07
Python_조건문  (0) 2021.06.07
Python_연산자  (0) 2021.06.05
Comments