[Python] 특정 룰에 맞추어 리스트 정렬하기
[Python] 특정 룰에 맞추어 리스트 정렬하기
python에는 리스트를 정렬하기 위해서는
sorted
가 있다. 하지만sorted
는 기본적으로 리스트의 아이템 이름 순으로 정렬하는데 우리가 원하는 특정 규칙대로 정렬 하는 방법은 없을까?
list = ['DB', 'DS', 'AI', 'OB', 'MF']
new_list = sorted(list)
print(new_list)
# ['AI', 'DB', 'DS', 'MF', 'OB']
다음과 같이 list
를 sorted
시킬 때 아이템의 이름순으로 정렬 됨을 알 수 있다. 하지만 만약 DB > DS > AI > OB > MF 순으로 정렬을 하고 싶을 때 lambda
를 이용하면 쉽게 구현할 수 있다.
rule = ['DB', 'DS', 'AI', 'OB', 'MF']
order = {key: i for i, key in enumerate(rule)}
list = ['DB', 'DS', 'AI', 'OB', 'MF']
new_list = sorted(list, key=lambda k: order[k])
print(new_list)
# ['DB', 'DS', 'AI', 'OB', 'MF']