class Tool:
	def __init__(self, name, weight):
		self.name = name
		self.weight = weight
	def __repr__(self):
		return f'{Tool.name}, {Tool.weight}'
 
tools = [
		 Tool('A', 1),
		 Tool('C', 4),
		 Tool('D', 2),
		 Tool('Z', 10)		 
]
 
# 정렬을 할때 다양한 기준으로 정렬을 해야한다면 무엇을 해야할까
# tuple?
tools.sort(key=lambda x:(x.name, x.weight))
# 가장 쉬운 방법이지만 한쪽은 오름차순, 한쪽은 내림차순으로 할려면 힘들다
 
# 파이썬은 이런 상황을 위해 stable sort 알고리즘을 제공한다
# key 함수가 반환하는 값이 같다면 원래 순서를 반환한다
# 따라서 우리는 sort함수를 여러번 호출해도 된다는 것이다
tool.sort(key=lambda x: x.name)
tool.sort(key=lambda x: x.weight, reverse=True)
 
 
참고자료: