필요

til 에 작성한 마크다운 문서 목록을 인덱스로 만들어주는 스크립트를 몇년전에 만든걸 그대로 쓰고 있었는데, 이번에 til 을 진행하다가 보니 디렉토리와 문서의 순서가 알파벳순이 아닌 것을 발견함.

for 문에서 루프 돌기 전에 정렬하면 되는데, list.sort()None 을 리턴하기 때문에 변수에 한번 할당하고 써야함. 굳이 한줄 더 쓰지 않고 정렬된 리스트를 바로 쓰고 싶다.

해결

https://docs.python.org/3.7/library/functions.html#sorted

sorted 함수를 쓰면 정렬된 리스트를 바로 리턴해줌. python 2.4 에서 생긴 함수였는데, 내가 파이썬을 워낙 옛날에 기본 문법, 함수만 보고 그 이후로 업데이트를 잘 안 했다보니 익숙하지 않은 함수였던 듯.

아래와 같이 -,+ 수정하여 해결함.

 indexfile = open("index.md", "w")

 # print out to index.md
-for category in dicts:
+for category in sorted(dicts.keys()):
     print(category, file=indexfile)
     print('====', file=indexfile)
     print('', file=indexfile)
-    for title in dicts[category]:
+    for title in sorted(dicts[category]):