표시할 번호는 문자열로 남기고 크기순으로 정렬하려면 sorted(values, key=int)를 쓰세요. 각 문자열을 정수로 바꾼 값으로 순서를 정하고, 결과에는 원래 문자열이 들어갑니다. 예를 들어 "002"는 값 2의 자리에 놓이면서 앞의 0을 유지합니다.
values = ["10", "002", "2", "1"]
ordered = sorted(values, key=int)
print(ordered)
['1', '002', '2', '10']
비교에 쓰는 정수 키는 차례로 10, 2, 2, 1입니다. "002"와 "2"는 키가 같아서 입력에서 앞에 있던 "002"가 결과에서도 먼저 나옵니다. 기본 sorted(values)는 문자열 자체를 앞 글자부터 비교합니다. 그래서 "10"의 첫 글자 "1"이 "2"보다 앞선다는 이유로 "10"이 먼저 나올 수 있습니다.
정수로 해석할 수 없는 값이 섞였을 때
이 방법을 쓰려면 각 문자열을 int()가 읽을 수 있어야 합니다. 예를 들어 "2.5"가 섞이면 정렬 과정에서 정수 키를 만들다가 ValueError가 발생합니다.
values = ["10", "2.5", "1"]
try:
print(sorted(values, key=int))
except ValueError as error:
print(type(error).__name__)
ValueError
정수 번호만 받아야 하는 입력이라면 이때 원래 값을 확인하세요. 원래 표시의 앞자리 0이 필요할 때는 결과까지 정수로 변환할 필요가 없습니다.
위 번호는 가상 입력이며 Windows의 Python 3.14.3에서 실행했습니다. Python 정렬 안내의 키 함수와 int의 문자열 입력 규칙에서 조건을 확인할 수 있습니다.