ASCII 정렬
ipfs 파일을 업로드하는 중에 다음과 같은 정렬이 발생했다.
우리가 아는 오름차순 0, 1, 2, 3, 4 .. 가 아닌 앞자리가 빠른 순서로 정렬이 된다.
0, 1, 10, 11, 12, 13 ...
기존 정렬을 다음과 같은 정렬로 바꿔보자
실습
count_list = []
for i in range(100):
count_list.append(i)
count_index = 0
for i in count_list:
size = len(str(i))
if size == 1:
temp = '{:0<2d}'.format(i)
else:
temp = '{:0<3d}'.format(i)
count_list[count_index] = temp
count_index += 1
count_list.sort()
다음과 같은 정렬을 확인할 수 있다.
이제 뒤에 붙은 0을 제거해주자
count_index = 0
for i in count_list:
size = len(i)
if size == 2:
temp = i[:1]
else:
temp = i[:2]
count_list[count_index] = temp
count_index += 1
count_list = list(map(int, count_list))
print(count_list)
다음과 같이 목표한 정렬 결과를 확인할 수 있다.