파이썬 질문 [('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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)