+이전포스팅 참고하세요)[python example #4-2]List자료형만 사용하여 최빈값 더 간단하게 구하기(최빈값 1개 vs 여러개)

[PYTHON] 최빈값 출력하기

  <숫자list, dictionary 사용> - 다음 포스팅에서 문자list예정(거의비슷)

문자list, 숫자list, 문자숫자혼합list 모두 사용가능

  • 문제

숫자로 이루어진 list에서 가장 많이 등장한 최빈값을 출력하세요

  • 알고리즘 표현

1. input = [4,13,2,55,34,14,14,23,2,2,55,5,55,34,34,34]

2. 결과 dictionary = {'4의 빈도': 1, '13의 빈도': 1, '2의 빈도': 3, '55의 빈도': 4, '34의 빈도': 4, '14의 빈도': 2, '23의 빈도': 1, '5의 빈도': 1}

  -> dictionary의 key값은 중복될 수 없음을 이용

  -> input을 하나씩 검사하면서 같은 숫자의 value값을 +1씩할 것이다.

3.  dictionary에서 가장 value값이 크게나온{'55의 빈도': 4, '34의 빈도': 4} 를 찾을 수 있다.

  -> 4. 즉, 최빈값 = 34, 55 이다.

  • input

input = [2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]

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
input = [2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]
 
def 숫자리스트최빈값(x): #x가 list로 주어질 때, 그 수 중에서 최빈값을 구할 것
    dictionary = {}
    for i in x:
        if dictionary.get(i) is None: #파이썬에선 없음을 None으로 표기
            dictionary[i] = 1 #i라는 숫자가 나올때 1을 삽입
        else:
            dictionary[i] += 1 #i라는 숫자의 빈도 증가
    #여러개의 최빈값을 뽑아내기
    most = max(dictionary.values()) #최빈값 추출 - 값중에 최대값 찾기
    max_list ={}
    #최빈값 dictionary만들기
    for key, value in dictionary.items():
        if value == most :
            max_list[key] = value
    print(dictionary) #{2: 3, 5: 3, 6: 6, 9: 2, 11: 6} :2가 3번, 5가 3번, 6이 6번....
    print(max_list)   #{6: 6, 11: 6} : 최빈값 리스트만 추출
    return max_list
 
final = 숫자리스트최빈값(input) # 최빈값만 뽑아낸 리스트 = max_list
print(final) #결과값 두번째줄
 
print("최빈값은 ", end = " ")
for key,value in final.items(): #최빈값 여러개일 경우 뽑기 가능
    print(key, end = " ")
print("입니다.")
 
cs
  • 결과값

{2: 3, 5: 3, 6: 6, 9: 2, 11: 6}
{6: 6, 11: 6}
{6: 6, 11: 6}
최빈값은  6 11 입니다.


-> 최빈값이 2개인 경우입니다. : 6, 11

  • 배울코드

1. dictionary 자료형을 for문안에 두고, key값도 달라지게 할 수 있음을 알아야한다.

2. if dictionary.get(key) is None 과 if key not in dictionary 이 같은역할을 하여 두 코드 모두 작동된다.

3. 여러개의 최빈값을 뽑아내는 방법을 알자

 

 

*)

어떤 피드백이든 댓글부탁드립니다.

더 좋은 방법이 있다면 알려주세요.

도움이 되셨다면, 하트버튼 또는 댓글부탁드려요~

요청할 문제가 있다면 댓글 부탁드려요!!!

*(

 

 

 

+ Recent posts