파이썬 리스트의 같은 요소끼리 묶을 수 있을까요?

조회수 2217회

만약

["가나다","가나다","가나다","가나다","가나다","abc","abc","abc","마바사","마바사","마바사]

와 같은 1차원 리스트가 있을 때 2차원 리스트로

[["가나다","가나다","가나다","가나다","가나다"],["abc","abc","abc"],["마바사","마바사","마바사"]]

이렇게 묶을 수 있을까요?

  • 숙제라면 스스로 해보시는 게 어떨까요? 이렇게 질문올려서 답만 구하는 건 전혀 자신에게 도움이 되지 않습니다. nowp 2020.5.3 23:58
  • 급한데 방법을 몰라 질문드립니다. 김선재 2020.5.4 00:37
  • 매우 급한 상황인데, 전혀 실마리조차 안 잡힌다면, 프로그래밍 적성이 아닙니다. 다른 거 배우세요. 프로그래밍 안해도 다 잘 먹고 삽니다. nowp 2020.5.4 02:48
  • ㄹㅇㅋㅋ 알 수 없는 사용자 2020.5.4 13:05

3 답변

  • from collections import Counter
    l = ["가나다","가나다","가나다","가나다","가나다","abc","abc","abc","마바사","마바사","마바사"]
    ll = [[k]*v for k, v in Counter(l).items()]
    

    언제 시간나면 python built-in module이 뭐가 있는지 공부해보세요.
    훌륭한 함수가 많습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • +별해

    from itertools import groupby
    l = ["가나다","가나다","가나다","가나다","가나다","abc","abc","abc","마바사","마바사","마바사"]
    ll = [list(v) for _, v in groupby(l)]
    
  • 모듈 사용하는 답변만 있어서 따로 import 할 필요 없이 dictionary로 해결하는 방법도 보여드리겠습니다.

    a = ["가나다","가나다","가나다","가나다","가나다","abc","abc","abc","마바사","마바사","마바사"]
    b = {}
    
    for item in a:
        if item in b:
            b[item].append(item)
        else:
            b[item] = [item]
    
    answer = list(b.values())
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)