파이썬 질문 [('a', 5), ('b', 2), ('c', 1), ('b', 2), ('a', 9), ('d', 3), ('c', 13), ('e', 6)] 이런 식의 데이터를 숫자로 정렬하기.
조회수 576회
data = [('a', 5), ('b', 2), ('c', 1), ('b', 2), ('a', 9), ('d', 3), ('c', 13), ('e', 6)] 이런 식의 데이터를 [('a', 14), ('c', 14), ('e', 6), ('b', 4), ('d', 3)] 이렇게 튜플의 앞에 값에는 문자가, 뒤에 값에는 문자열에 해당되는 값을 합한 값을 내림차순으로 정렬하는 리스트를 만들고 싶은데, 어떻게 해야할까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
>>> data = [('a', 5), ('b', 2), ('c', 1), ('b', 2), ('a', 9), ('d', 3), ('c', 13), ('e', 6)] >>> sum_dict = {} >>> for ch, num in data: sum_dict[ch] = sum_dict.get(ch, 0) + num >>> sum_dict {'a': 14, 'b': 4, 'c': 14, 'd': 3, 'e': 6} >>> sorted(sum_dict.items(), key=lambda e: e[1]) [('d', 3), ('b', 4), ('e', 6), ('a', 14), ('c', 14)] >>> sorted(sum_dict.items(), key=lambda e: e[1], reverse=True) [('a', 14), ('c', 14), ('e', 6), ('b', 4), ('d', 3)]
- 제가 고민하고 있는 부분은 예를 들어, 겹치는 a에 관하여 튜플의 뒤의 값을 합치는 것을 for문과 if문으로 바꿀 수 있는지 입니다. 알 수 없는 사용자 2020.11.5 11:42
댓글 입력