[파이썬] 딕셔너리를 이용한 카운팅, 정렬 예제

2019. 11. 2. 15:23개발/파이썬

목적

  • 숫자 리스트에서 발생하는 숫자의 횟수와 합을 저장
  • 숫자, 발생 횟수, 합의 다양한 방식으로 딕셔너리 저장

 

샘플 코드 

# 딕셔너리와  리스트 조합, 소팅 예제 

dataSample = [5, 3, 3, 2, 1, 6, 10, 8, 7, 3, 10, 2, 1, 6, 9, 4, 5, 2]

dicCount = {}

for data in dataSample:
    if not data in dicCount:
        dicCount[data] = [0, 0]
    
    dicCount[data][0] += 1
    dicCount[data][1] += data


print('dicCount')
for k, v in dicCount.items() : 
    print(k,v)


# 정렬 방식 : dicCount 를 key를 이용해 정렬 --> 튜플로 리턴됨
# x[0]은 dicCount.items() 이 리턴하는 (key, value) 에서 key 를 의미 한다.
dicCount2 = sorted(dicCount.items(), key=lambda x: x[0], reverse=False)

print('dicCount2 - key 로 정렬')
for item in dicCount2:
    print(item[0], item[1])

# 정렬 방식 : dicCount 를 value[0] 를 이용해 정렬 
# x[1][0]은 dicCount.items() 이 리턴하는 (key, value) value[0] 을 의미 한다.
dicCount3 = sorted(dicCount.items(), key=lambda x: x[1][0], reverse=True)
print('dicCount3 - 횟수로 정렬')
for item in dicCount3:
    print(item[0], item[1])



# 정렬 방식 : dicCount 를 value[0] 를 이용해 정렬 
# x[1][1]은 dicCount.items() 이 리턴하는 (key, value) value[1] 을 의미 한다.
dicCount4 = sorted(dicCount.items(), key=lambda x: x[1][1], reverse=True)
print('dicCount4 - 합으로 정렬')
for item in dicCount4:
    print(item[0], item[1])

 

설명

dataSample []에 담겨 있는 숫자들의 개별 발생 횟수와 합을 구하는 간단한 예제 

dicCount[숫자] = [횟수, 합] 

방식으로 계산해서 dicCount 에 넣는다. 

파이썬의 딕셔너리는 키 값으로 기본 정렬이 되지 않아서  sorted 함수를 이용해서 key, value 중 원하는 값으로 정렬했다. 
dicCount2 에는 키 값으로 정렬하고 
dicCount3는 [횟수, 합]에서 횟수로 역순 정렬
dicCount4는 [횟수, 합]에서 합으로 역순 정렬한다.

결과

dicCount
5 [2, 10]
3 [3, 9]
2 [3, 6]
1 [2, 2]
6 [2, 12]
10 [2, 20]
8 [1, 8]
7 [1, 7]
9 [1, 9]
4 [1, 4]


dicCount2 - key 로 정렬
1 [2, 2]
2 [3, 6]
3 [3, 9]
4 [1, 4]
5 [2, 10]
6 [2, 12]
7 [1, 7]
8 [1, 8]
9 [1, 9]
10 [2, 20]


dicCount3 - 횟수로 정렬
3 [3, 9]
2 [3, 6]
5 [2, 10]
1 [2, 2]
6 [2, 12]
10 [2, 20]
8 [1, 8]
7 [1, 7]
9 [1, 9]
4 [1, 4]


dicCount4 - 합으로 정렬
10 [2, 20]
6 [2, 12]
5 [2, 10]
3 [3, 9]
9 [1, 9]
8 [1, 8]
7 [1, 7]
2 [3, 6]
4 [1, 4]
1 [2, 2]

 

※ 주력 사용언어가 파이썬이 아니다 보니 어쩌다 코딩하면 헷갈리는 부분이 많아서 자주 사용(?) 하는 코드들은 간단히 정리하고 참고할 목적으로 블로그에 올리고 있습니다.

 

딕셔너리 기본 정렬 글은 아래 글을 참고하세요~

 

[파이썬] 리스트/딕셔너리 정렬하기

파이썬 리스트와 딕셔너리 간단한 정렬 예제입니다. (나중에 찾기 위해 기록) 리스트는 기본적으로 sort 라는 함수를 가지고 있지만 딕셔너리는 sorted 의 힘을 빌려야 합니다. data2 = sorted(data.items(), key=..

eslife.tistory.com