본문 바로가기
Python

[python] dictionary list에서 key에 따른 value들 더하기

by clolee 2021. 10. 6.

이전에 뉴스기사를 크롤링한 후 내용이 같은 기사에 대해 Sentiment dictionary의 값들을 합쳐야 했다.

그래서 dictionary list에서 key에 따른 value들을 더하는 함수를 알아보았다.

 

우선 dictionary list를 하나 만든다.

dic1 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 2, '추천해요' : 1}
dic2 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 2, '추천해요' : 1}
dic3 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 2, '추천해요' : 1}
dic4 = {'좋아요': 5, '훈훈해요': 5, '슬퍼요': 0, '화나요': 3, '추천해요' : 1}

 

이 dictionay들에서 첫번째 dictionary dic1을 데이터프레임으로 만든다.

그리고 append()함수를 통해 dic2, dic3, dic4 를 데이터프레임에 행으로 추가한다.

주의할 점은 append()함수에 dictionary형태로 전달할 경우 ignore_index=True를 설정해줘야 한다.

df_dic = pd.DataFrame({'sentiment' : [dic1]})
df_dic = df_dic.append({'sentiment' : dic2}, ignore_index=True)
df_dic = df_dic.append({'sentiment' : dic3}, ignore_index=True)
df_dic = df_dic.append({'sentiment' : dic4}, ignore_index=True)
df_dic

 

 

dictionary list에서 key에 따른 value들을 더하는 sum_sentiment 함수이다.

from operator import itemgetter
def sum_sentiment(x):
   init_dict = list(x)
   
   result = {}
   for d in init_dict:
      for k in d.keys():
          result[k] = result.get(k, 0) + d[k]
   return result

 

 

sentiment column에 대해 sum_sentiment를 적용한 후 결과를 확인하면 같은 key에 따라 value들이 더해진 것을 확인할 수 있다. 

dic_sum = df_dic.agg({'sentiment' : lambda x : sum_sentiment(x)})
dic_sum

 

 

참고 :

https://www.delftstack.com/ko/howto/python-pandas/how-to-add-one-row-to-pandas-dataframe/

https://www.geeksforgeeks.org/python-sum-list-of-dictionaries-with-same-key/

 

댓글