Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pandas
- C
- ubuntu
- OpenCV
- windows forms
- 오류
- SSH
- LIST
- paramiko
- Numpy
- error
- Selenium
- Linux
- mysql
- VS Code
- 기타 연주
- 핑거스타일
- JSON
- pip
- pytorch
- C++
- label
- Python
- YOLO
- Docker
- 채보
- Visual Studio
- 명령어
- C#
- 프로그래머스
Archives
- Today
- Total
기계는 거짓말하지 않는다
Python Class 정렬, 정렬 기준 본문
클래스에 여러 인스턴스 변수의 기준에 따라 정렬할 때
비교함수 구현
# lt(a, b): a < b
operator.lt(a, b)
operator.__lt__(a, b)
# le(a, b): a <= b
operator.le(a, b)
operator.__le__(a, b)
# eq(a, b): a == b
operator.eq(a, b)
operator.__eq__(a, b)
# ne(a, b): a != b
operator.ne(a, b)
operator.__ne__(a, b)
# gt(a, b): a > b
operator.gt(a, b)
operator.__gt__(a, b)
ge(a, b): a >= b
operator.ge(a, b)
operator.__ge__(a, b)
# boolean 값으로 해석할 수도 있고,
# 그렇지 않은 임의의 값을 반환할 수도 있음
class TempClass:
def __init__(self, string:str, index:int):
if type(string) is not str: raise Exception("not string")
if type(index) is not int: raise Exception("not integer")
self.string = string
self.index = index
def __repr__(self):
return self.string + "-" + str(self.index)
def __str__(self):
return self.string + "-" + str(self.index)
def __gt__(self, obj): # 정렬 기준
if self.string == obj.string:
return self.index > obj.index
else:
return self.string > obj.string
a = TempClass("A", 10)
b = TempClass("B", 5)
c = TempClass("C", 2)
aa = TempClass("A", 3)
aaa = TempClass("A", 7)
d = TempClass("D", 15)
tempClassList = [c, b, aaa, a, d, aa]
print(tempClassList)
sortedList = sorted(tempClassList)
print(sortedList)
Key 전달
class TempClass:
def __init__(self, string:str, index:int):
if type(string) is not str: raise Exception("not string")
if type(index) is not int: raise Exception("not integer")
self.string = string
self.index = index
def __repr__(self):
return self.string + "-" + str(self.index)
def __str__(self):
return self.string + "-" + str(self.index)
a = TempClass("A", 10)
b = TempClass("B", 5)
c = TempClass("C", 2)
aa = TempClass("A", 3)
aaa = TempClass("A", 7)
d = TempClass("D", 15)
tempClassList = [c, b, aaa, a, d, aa]
print(tempClassList)
# key 전달
sortedList = sorted(tempClassList, key=lambda x: (x.string, x.index))
print(sortedList)
key=lambda x: (x.string, -x.index)로 변경하면 index는 내림차순으로 정렬됨
sorted 함수의 인자에 reverse=True를 추가하여 역순 정렬 가능
'Python' 카테고리의 다른 글
Python list 특정 길이, 값으로 초기화 (0) | 2021.08.05 |
---|---|
Python Numpy transpose (0) | 2021.08.04 |
Python Index Error (0) | 2021.08.03 |
Python ValueError: invalid literal for int() with base 10 (0) | 2021.08.02 |
Python OpenCV 웹캠 실시간 읽기 (0) | 2021.07.31 |
Comments