지출액 상위 10개 가맹점 골라 그래프 그리기
다음으로 과정 3과 4를 코드로 작성해 봅시다.
<프로그램 흐름>
3. 값(payment)을 기준으로 완성된 딕셔너리(spending)를 내림차순 정렬한 다음, 앞에서 10개 요소 뽑기
<코드>
3. top10 = sorted(spending.items(), key=operator.itemgetter(1), reverse=True)[:10]
과정 3에서는 값을 기준으로 spending 딕셔너리를 내림차순 정렬해야 하므로 operator 라이브러리의 itemgetter()와 reverse=True 옵션을 활용합니다(7장 참고). 이렇게 만들어진 리스트에서 앞의 10개 항목을 추출해야 하므로 [:10]으로 슬라이싱한 결과를 top10에 저장합니다.
과정 3까지 작성하고 top10을 출력하면 리스트 요소가 소괄호로 감싸진 형태, [(‘네이버파이낸셜(주)’, 1395840), (‘스마일페이 (신라면세점)’, 978035)...]로 출력됩니다. 이처럼 소괄호로 감싸진 한 단위를 튜플(tuple)이라고 하는데. 이 책에서는 자세히 다루지 않았습니다.
과정 4를 진행하려면 튜플 안에 있는 가맹점명과 이용금액을 분리해야 합니다. 여기서 바로 반복문으로 튜플의 요소를 분리하는 방법을 배워 보겠습니다. 간단합니다. 튜플의 요소에는 리스트처럼 인덱스로 접근할 수 있습니다. 따라서 for t in top10 으로 반복문을 작성하면 top10을 구성하는 튜플이 하나씩 t에 저장됩니다. 튜플의 요소에 접근하려면 인덱스를 활용해 t[0] 또는 t[1]로 접근할 수 있습니다. t[0]은 가맹점명이므로 가맹점명 리스트에, t[1]은 이용금액이므로 이용금액 리스트에 추가하면 됩니다.