본문 바로가기
개발일지/Python

[복기] 파이썬 튜플로감싸진 딕셔너리 안의 숫자를 가져와서 활용하는 코드

by 다니엘의 개발 이야기 2022. 5. 12.
320x100
# 이 수식의 포인트는 enumerate 로써 2개의 원소를 분할해서 출력해주는것
# 그리고 2개로 분할된 원소를 keys가 아닌 items로 사용했다는 점이다.
studentCnt = ({'cls01':18},{'cls02':21},{'cls03':20},{'cls04':19},
              {'cls05':22},{'cls06':20},{'cls07':23},{'cls08':17})

totalCnt = 0
minStdCnt = 0; minCls = ''
maxStdCnt = 0; maxCls = ''
deviation = []

for idx, dic in enumerate(studentCnt):
    for k, v in dic.items():
        totalCnt += v

        if maxStdCnt < v:
            maxStdCnt = v
            maxCls = k

        if minStdCnt == 0 or minStdCnt > v:
            minStdCnt = v
            minCls = k

avgCnt = round((totalCnt / len(studentCnt)),2)
print(f'전체 학생 수 :{totalCnt}')
print(f'평균 학생 수: {avgCnt}')
print(f'학생 수가 가장 적은 학급: {minCls}, 학생 수 : {minStdCnt}')
print(f'학생 수가 가장 많은 학급: {maxCls}, 학생 수 : {maxStdCnt}')

for idx, dic in enumerate(studentCnt):
    for k, v in dic.items():
        deviation.append(v- avgCnt)

print(f'학급별 학생 편차: {deviation}')






'''
# 내가 시도하려고 했던 코드
# ValueError: invalid literal for int() with base 10: 'cls01'
# 에러로 인해서 실패했다.
# 근본적으로 튜플안의 딕셔너리, 각 딕셔너리의 키값을 꺼내와서 합쳐주려고했는데
# 문자열과 숫자열은 합칠수 없다고 나와서 당황스러웠다.
studentCnt = ({'cls01':18},{'cls02':21},{'cls03':20},{'cls04':19},
              {'cls05':22},{'cls06':20},{'cls07':23},{'cls08':17})

total = 0

for i in studentCnt:
    for a in i.keys():
        total += int(a)

print(total)
'''
300x250