Python 리스트 동일 원소 개수 세기 (try, except 구문) + 딕셔너리 정렬 하기

 

Try, Except 구문 이용 동일 원소 개수 세기

 

알고리즘 문제를 풀다 보면 리스트에서 동일 원소의 개수를 셀 일이 있는데, 이 때 try, except 구문을 이용하면 편리하다.

try : 
	예외가 발생할 가능성이 있는 코드
    
except : 
	예외가 발생했을 때 실행할 코드

 

 

결과를 확인하기 위해서는 딕셔너리 형태의 출력으로 받아보면 된다.

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


# result dictionary 생성
res = {}

for i in num_list : 
	try : res[i] += 1
    except : res[i] = 1
    
print(res)

 

>>> {10: 1, 9: 2, 8: 3, 7: 4, 6: 4, 5: 4, 4: 3, 3: 2, 2: 1}

 

 

딕셔너리 정렬 하기

딕셔너리를 정렬할 때는 아래 코드를 이용하면 된다.

 

sorted(dict.items())

 

sorted 메서드를 이용하면 dictionary 키-밸류쌍이 튜플 형태로 묶이면서 리스트 안에 들어가게 되는데 이를 바탕으로 정렬을 진행한다. list와 마찬가지로 reverse = True를 이용하면 내림차순으로 볼 수 있다.

 

sorted_dict = sorted(dict.items(), key = lambda x : x[1], reverse = True)

 

위 코드를 이용하면 딕셔너리의 value 값을 기준으로 내림차순 정렬이 되는 것을 확인할 수 있다.

(위 코드에서 의미하는 key는 딕셔너리의 key가 아님!)