Please Enable JavaScript!
Gon[ Enable JavaScript ]

파이썬(Python) sorted 함수 사용해서 정렬하기

파이썬 Python
반응형

sorted 함수는 반복 자료형 내부의 데이터를 오름차순/내림차순으로 정렬해 줍니다. 오늘 다룰 내용은 반복 자료형인 리스트(list) 와 사전(dictionary) 내부에 데이터를 정렬해서 반환하는 방법입니다.

 

 

1. 함수 종류

 

sorted 는 파이썬 내장 함수로 매개변수로 입력한 순회 가능한 자료형(iterator) 을 정렬해서 반환합니다. 매개변수와 함수에 대한 설명은 아래와 같습니다.

 

sorted(iterable, *, key=None, reverse=False)

l  iterable : 의 항목들로 새 정렬된 리스트를 돌려줍니다.

l  key(선택) : 비교 대상이 되는 값으로 key 값을 기준으로 정렬합니다.

l  reverse(선택) : 논리값입니다. True 는 내림차순, False 는 오름차순으로 정렬합니다.

l  반환 : 새로 정렬된 리스트를 반환합니다.

 

 

2. 리스트(list) 데이터 오름차순 정렬하기

 

먼저 리스트(list) 데이터를 정렬해 보겠습니다. sorted() 함수의 매개변수로 리스트를 입력합니다. 나머지 두 개의 매개변수는 선택이기 때문에 입력하지 않아도 오름차순으로 정렬된 리스트 객체로 반환합니다. 

# 숫자 기본정렬, 오름차순
int_data = [10, 4, 9, 8, 2, 1, 3, 7, 6, 5]
sorted_data = sorted(int_data)
print(f'origin : {int_data}')
print(f'sorted : {sorted_data}')


[결과]
origin : [10, 4, 9, 8, 2, 1, 3, 7, 6, 5]
sorted : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

숫자와 같이 문자열도 sorted() 함수로 오름차순 정렬을 해서 리스트(list) 객체로 반환합니다. 

# 문자열 기본정렬
str_data = ['X', 'D', 'E', 'F', 'Z', 'A', 'B']
sorted_data = sorted(str_data)
print(f'origin : {str_data}')
print(f'sorted : {sorted_data}')
 
[결과]
origin : ['X', 'D', 'E', 'F', 'Z', 'A', 'B']
sorted : ['A', 'B', 'D', 'E', 'F', 'X', 'Z']

 

 

3. 리스트(list) 데이터 내림차순 정렬하기

 

데이터를 내림차순으로 정렬하기 위해서는 세 번째 매개변수인 reverse 값을 True 로 변경합니다. 아래 소스처럼 reverse=True 를 입력하고 sorted() 함수를 실행합니다. 결과는 그림처럼 역순으로 정렬해서 반환하고 있습니다. 

# 숫자 기본정렬, 내림차순
int_data = [10, 4, 9, 8, 2, 1, 3, 7, 6, 5]
sorted_data = sorted(int_data, reverse=True)
print(f'origin : {int_data}')
print(f'sorted : {sorted_data}')
 
[결과]
origin : [10, 4, 9, 8, 2, 1, 3, 7, 6, 5]
sorted : [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 

 

4. 사전(dictionary) 데이터 오름차순 정렬하기

 

다음은 사전 자료형에 대한 정렬입니다. 사전은 key value 의 쌍으로 이루어져 있습니다. 정렬 기준으로 두 가지가 가능하다는 의미입니다. 기본은 key 를 기준으로 오름차순 정렬해서 key 값이 들어간 리스트(list) 를 반환합니다. 아래 샘플처럼 사전 객체를 매개변수 값으로 넘깁니다. 

# 사전 데이터 key 값 오름차순 정렬 및 리스트 반환
dic_data = {'A' : '1', 'C' : '2', 'D' : '4', 'B' : '5'}
sorted_data = sorted(dic_data)
print(f'origin : {dic_data}')
print(f'sorted : {sorted_data}')
 
[결과]
origin : {'A': '1', 'C': '2', 'D': '4', 'B': '5'}
sorted : ['A', 'B', 'C', 'D']

 

또 다른 방법은 사전(dictionary)keys() 함수를 사용해서 키 값만 넘기는 것입니다. keys() 의 반환값은 사전의 키 값이 들어간 리스트(list) 객체입니다. 

# 사전 데이터 key 값 오름차순 정렬
dic_data = {'A' : '1', 'C' : '2', 'D' : '4', 'B' : '5'}
sorted_data = sorted(dic_data.keys())
print(f'origin : {dic_data}')
print(f'sorted : {sorted_data}')
 
[결과]
origin : {'A': '1', 'C': '2', 'D': '4', 'B': '5'}
sorted : ['A', 'B', 'C', 'D']

 

다음은 key value 값 모두 정렬해서 반환하는 방법입니다. 기준은 key 값이며, 사전(dictionary)에서 items() 함수를 호출해서 key value 가 담긴 리스트(list) 객체를 sorted() 의 매개변수로 넘깁니다. 결과는 key 를 기준으로 정렬된 리스트이며, 리스트 내부에 각 요소는 사전 자료형에 저장되어 있던 key value 를 저장한 튜플(tuple) 입니다. 

# 사전 데이터 key 를 기준으로 오름차순 정렬해서 key, value 값을 리스트로 반환
dic_data = {'A' : '1', 'C' : '2', 'D' : '4', 'B' : '5'}
sorted_data = sorted(dic_data.items())
print(f'origin : {dic_data}')
print(f'sorted : {sorted_data}')
 
[결과]
origin : {'A': '1', 'C': '2', 'D': '4', 'B': '5'}
sorted : [('A', '1'), ('B', '5'), ('C', '2'), ('D', '4')]

 

 

5. 사전(dictionary) 데이터 내림차순 정렬하기

 

사전(dictionary) 도 리스트(list) 처럼 오름차순 정렬이 가능합니다. 세 번째 파라미터인 reverse 의 값으로 True 를 입력합니다. 

# 사전 데이터 key 값 내림차순 정렬
dic_data = {'A' : '1', 'C' : '2', 'D' : '4', 'B' : '5'}
sorted_data = sorted(dic_data, reverse=True)
print(f'origin : {dic_data}')
print(f'sorted : {sorted_data}')
 
[결과]
origin : {'A': '1', 'C': '2', 'D': '4', 'B': '5'}
sorted : ['D', 'C', 'B', 'A']

 

key value 모두 내림차순으로 반환하고 싶다면 items() 함수를 호출해서 key value 가 담긴 리스트(list) 객체를 sorted() 의 매개변수로 넘깁니다. 세 번째 파라미터인 reverse 의 값으로 True 를 입력해서 내림차순으로 정렬된 데이터를 반환합니다. 

# 사전 데이터 key 를 기준으로 내림차순 정렬해서 key, value 값을 리스트로 반환
dic_data = {'A' : '1', 'C' : '2', 'D' : '4', 'B' : '5'}
sorted_data = sorted(dic_data.items(), reverse=True)
print(f'origin : {dic_data}')
 
[결과]
origin : {'A': '1', 'C': '2', 'D': '4', 'B': '5'}
sorted : [('D', '4'), ('C', '2'), ('B', '5'), ('A', '1')]

 

반응형
Posted by 녹두장군1
,