리스트 순회하면서 존재하는 원소를 더하는 방법이 궁금합니다.

조회수 807회
data_list = [[apple, 5], [grape, 3], [apple, 2]]

result_data = []
check_list = []

for item in data_list:
    if item[0] not in check_list:
        result_data.append(item)
        check_list.append(item[0])
    else:
        for result_item in result_data:
            if result_item[0] == item[0]:
                result_item[0] += item[0]

리스트에서 같은 과일 찾아서 개수 더하는 경우에 위 코드처럼 하니까 리스트 원소 개수가 많은 경우에 너무 시간이 오래 걸립니다. 저렇게 안하고 빠르게 할려면 어떻게 코드를 고쳐야 하나요?

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    data_sum = {}
    
    for 과일, 갯수 in data_list:
        data_sum[과일] = data_sum.get(과일, 0) + 갯수
    
  • import pandas as pd
    
    data_list = [['apple', 5], ['grape', 3], ['apple', 2]]
    df = pd.DataFrame(data_list)
    
    res = df.groupby(by=[0]).sum()
    
    for idx in res.index:
       print('{0}:{1}'.format(idx, res.loc[idx]))
    

    Pandas를 활용하시면 쉽게 원하시는 걸 하실 수 있습니다. 도움이 되셨길 바랍니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 판다스가 데이터 활용할때 훨씬 빠른가보네요. 감사합니다. 임현준 2021.7.6 15:02

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

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

(ಠ_ಠ)
(ಠ‿ಠ)