https://leetcode.com/problems/reorder-data-in-log-files/
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letter_logs = []
digit_logs = []
for val in logs:
if val.split()[1].isdigit():
digit_logs.append(val)
else:
letter_logs.append(val)
letter_logs.sort(key=lambda x: (x.split()[1:],x.split()[0]))
return letter_logs+digit_logs
매개변수가 필요하지 않은 함수는 람다식으로 inline형태로 적을 수 있다.
이 문제에서는 digit log들은 정렬이 따로 필요없으므로, letter log만을 조건문으로 따로 만들어 lambda식으로 정렬을 했다.
sort
함수는 인자로 key=
를 받아 정렬 기준을 줄 수 있으며, ,
로 구분하여 우선순위대로 처리할 수 있다.
letter_logs의 키를 람다식으로 각 letter_logs의 요소를 공백으로 split한것의 두번째 글자 이후, 그 값이 동일하다면 첫번째 값으로 키를 지정해준다.
이렇게 리스트를 소팅할 때 람다식을 통해 각 요소의 구체적인 어떤 부분을 키로 지정해줄 수 있다.