# Dict
# 비순차 자료구조
# 키를 통해 값을 찾는 연관배열 객체
# 선언방법은 {키:값} 형태로 정의하고 사용
# 다양한 자료형으로 구성된 데이터를 하나의 변수로 접근할수 있음
dict1= {'name':'혜교', 'age':35}
# 비순차 자료구조이기 때문에 인덱스로 조회 불가
# 단, 키를 통해 값을 조회
# 객체명[키명], 객체명.키명
print(dict1['name'], dict1['age'])
# dict 객체의 모든 키 조회 keys
for k in dict1.keys():
print(k, end=', ')
# dict 객체의 모든 값 조회 values
for k in dict1.values():
print(k, end=', ')
# dict 객체의 모든 키, 값 조회 items
for k, v in dict1.items():
print(f'{k}/{v}', end=', ')
# dict 객체의 키를 이용해서 값 조회 : get
for k in dict1.keys():
print(dict1.get(k), end=', ')
# dict 생성 1
dict1 = {}
# dict 생성 2
dict2 = dict( name ='수지', age=30)
print(dict2)
# dict 생성 3
data = [['name','지현'],['age',32]]
dict3 = dict(data)
print(dict3)
# 객체명[새로운키] = 새로운 값
dict1['name'] = '혜교' #dict에 새로운 키와 값 추가
dict1['age'] = 35
print(dict1)
# 객체명[기존키] = 새로운 값 : 수정
dict1['age'] = 25
print(dict1)
# del 객체명 [키] : 삭제
del dict1['age'] # 키와 값 모두 삭제
print(dict1)
# 성적프로그램 v3a
# 리스트 자료구조를 이용해서
# 학생 1명분의 데이터를 처리
# dict 자료구조를 이용해서 처리
# 저장형식 : {'name':??, 'kor':??, 'eng':??, 'mat':??,
# 'tot':??, 'avg':??, 'grd':?? }
name = input('이름은?')
kor = int(input('국어는?'))
eng = int(input('영어는?'))
mat = int(input('수학은?'))
# 성적처리
tot = kor + eng + mat
avg = tot / 3
grd = '가'
if avg >= 90: grd = '수'
elif avg >=80: grd= '우'
elif avg >=70: grd= '미'
elif avg >=60: grd= '양'
# 데이터 통합
sj = {'name': name, 'kor':kor, 'eng':eng, 'mat':mat,
'tot':tot, 'avg':avg, 'grd':grd }
# 처리결과 출력
print(sj)
# 성적프로그램 v3b
# 리스트 자료구조를 이용해서
# 학생 3명분의 데이터를 처리
# dict 자료구조를 이용해서 처리
# 저장형식 : {학생이름[:??,??,??,??,??,??] }
sjs= {} # 리스트 생성
for i in range(3) :
name = input('이름은?')
kor = int(input('국어는?'))
eng = int(input('영어는?'))
mat = int(input('수학은?'))
# 성적처리
tot = kor + eng + mat
avg = tot / 3
grd = '가'
if avg >= 90: grd = '수'
elif avg >=80: grd= '우'
elif avg >=70: grd= '미'
elif avg >=60: grd= '양'
# 데이터 추가
data = [kor,eng,mat,tot,avg,grd]
sjs[name] = data
# 3명의 성적데이터 출력
from pprint import pprint as pp # pretty print
pp(sjs)
pp(sjs['aa']) # aa학생 성적데이터 조회