0 - 1 - 9 - a - z 순서의 기계적인 소팅이외에 사람이 이해하는 소팅을 구현할 필요가 있어서, 구글링을 좀 해봤더니, 이미 많은 사람이 구현해 놓은 좋은 snnipet이 있었다. 정규식 모듈 임포트 없이 구현한게 짱인듯... 이해는 안 된다. 왜 이런 결과가 나오는지... -_-
def naturalsort(string):
'''A natural sort helper function for sort() and sorted()
without using regular expression.
'''
r = []
for c in string:
if c.isdigit():
if r and isinstance(r[-1], int):
r[-1] = r[-1] * 10 + int(c)
else:
r.append(int(c))
else:
r.append(c)
return r
mylist = ['1:5', '1:15', '1:2', '1:3', '1:4', '2:3', '11:2']
print (sorted(mylist, key = naturalsort))
========================================================
실행결과)
['1:2', '1:3', '1:4', '1:5', '1:15', '2:3', '11:2']
어딘가에서 보고 베껴놓은 건데, 잘 동작한다.
댓글 영역