반응형
안녕하세요 한주현입니다.
오늘은 python에서 딕셔너리의 값으로 정렬하는 방법에 대해 알아보겠습니다.
들어가며
python 의 사전형은 순서가 없는 자료형입니다.
그런데 가끔 우리는 사전의 값 순서대로 정렬하고 싶을 때가 있지요..ㅋㅋ
예를 들어, 텍스트에서 단어 수를 사전형으로 세어 본 다음 어떠한 단어가 가장 많이 나왔는지 알고 싶을 때
값으로 정렬하게 된다면 가장 많이 출현한 단어를 알 수 있을 겁니다.
Dictionary 값 value 로 정렬하기
사전의 value 값으로 정렬하는 방법은 sorted 함수를 사용합니다.
sorted 함수는 key 를 받을 수 있는데, 여기서 lambda 식을 사용하여 튜플에서 1 번째 index를 기준으로 정렬하는 것 이지요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | >>> d = {'A': 3, 'C': 1, 'G': 5, 'T': 2} >>> d {'A': 3, 'C': 1, 'G': 5, 'T': 2} ## d.items() 를 하여 각 key, value 가 tuple로 들어있는 ## 리스트 (dict_items 객체) 로 만듭니다 >>> d.items() dict_items([('A', 3), ('C', 1), ('G', 5), ('T', 2)]) ## dict_items 객체를 lambda 식을 활용하여 정렬을 하는 거지요 ## 오름차순 정렬 >>> sorted(d.items(), key=lambda x: x[1]) [('C', 1), ('T', 2), ('A', 3), ('G', 5)] ## 내림차순 정렬 >>> sorted(d.items(), key=lambda x: x[1], reverse=True) [('G', 5), ('A', 3), ('T', 2), ('C', 1)] | cs |
텍스트에서 가장 많이 출현한 단어 수 세기
아래 데이터는 세익스피어의 햄릿입니다 ..ㅋㅋ
https://raw.githubusercontent.com/KennethJHan/blogdata/master/hamlet.txt
데이터를 받으시고 햄릿에서 가장 많이 출현한 단어를 찾아봅시다 ㅎㅎ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/usr/bin/python ## 단어의 빈도수를 카운트 할 dictionary 를 만듭니다 word_dic = {} ## 텍스트 파일을 한 줄씩 읽어서 with open("hamlet.txt",'r') as fr: for line in fr: ## 한 줄을 소문자로 만들고 공백으로 잘라서 for 문으로 하나씩 뽑습니다 for word in line.lower().strip().split(): ## 단어가 dictionary에 등록 되어 있다면 카운트를 올려주고 if word in word_dic: word_dic[word] += 1 ## 단어가 dictionary에 없다면 등록하고 카운트를 1로 등록합니다. else: word_dic[word] = 1 ## sorted 함수로 dictionary의 items() 메서드로 반환된 튜플을 정렬해 줍니다 word_list = sorted(word_dic.items(), key=lambda x: x[1], reverse=True) ## 상위 10개를 뽑아 봤습니다 print(word_list[:10]) ## 결과 ## [('the', 1083), ('and', 939), ('to', 727), ## ('of', 670), ('a', 540), ('i', 523), ## ('my', 519), ('you', 433), ('in', 420), ('ham.', 358)] | cs |
the 였군요!! ㅋㅋㅋ
오늘은 파이썬 딕셔너리의 value 로 정렬하고
단어의 빈도수를 세어보는 방법에 대해 알아보았습니다.
여러분께 도움이 되셨으면 좋겠네요 :)
그럼 다음에 또 만나요 ^^
- 참고 URL
기부 버튼을 만들었습니다
여러분들의 작은 정성이 저에게 큰 힘이 됩니다
기부해주신 분들을 기억하며
더 좋은 내용으로 보답해 드리겠습니다 :)
Donate 버튼은 paypal 결제로 paypal 계정이 없으시더라도
카드로도 기부 가능하십니다 :)
Use your credit card or bank account (where available). 옆의 continue 를 누르시면 됩니다
한주현 드림
반응형
'컴퓨터 > Python' 카테고리의 다른 글
[파이썬] URL 살아있는지 검사 - 주소가 200 인지 체크 - HTTP 응답 상태 코드 (0) | 2019.03.06 |
---|---|
[python] 파이썬 pickle 피클 활용법 (0) | 2018.07.07 |
[파이썬] 딕셔너리 사전 합치기 - 여러개 딕셔너리 합치기 (0) | 2018.07.03 |
[pandas] 파이썬 판다스 - matplotlib pyplot 그래프 차트 그리기, 히스토그램, 스캐터플롯, ggplot 스타일 플롯 그리기, csv 파일 읽어 DataFrame에 넣기, x축, y축, 제목 설정하기 (5) | 2018.06.06 |
[pandas] 판다스 파이썬으로 엑셀 만들기 - DataFrame을 헤더 서식 적용하여 엑셀 파일 만들기 (0) | 2018.06.02 |
댓글