여러 필드가있는 사용자 지정 개체를 정의했습니다.여러 목록에서 개체의 고유 목록 만들기
예를 들어 이름, ID 및 연령으로 구성된 학생 개체가 있다고 가정 해보십시오. 두 학생을 비교하여 그들이 같은 학생인지 아닌지를 결정하기 위해 두 학생의 나이, 이름 및 ID가 일치하는지 여부를 반환하는 __ eq__
메소드를 구현했습니다.
def __eq__(self, other): return self.name == other.name and self.ID == other.ID and self.age == other.age
학생들은 학생 일 뿐이므로 학생 ID가 고유하다고 생각한다는 사실을 고려하십시오.
가정하자 나는 학생의 임의의 수 다음과 같은 등록 목록
[S1, S2, S3] [S2, S3] [S3, S5, S4] [S1, S4, S2, S1]
나는 다음과 같은 요소를에
S1, S2, S3, S4, S5
간단한 방법을 포함 할 일부 데이터 구조를 만들 것입니다 오브젝트있다 물건을 많이 잡을 수있는 데이터 구조를 초기화하고, 항목을 잡고, 구조에 있는지 여부를 확인하고, 그렇지 않은 경우 추가하는 것입니다. 나는 간단한 목록으로 그것을 구현하기로 결정하면 내 목록 성장을 계속
new_list = some_new_list for each list of students: for each student in the list: check if the student is in new_list #decide what to do
, 나는 잠재적 내가 학생들과 등록 목록의 말도 안되는 금액을 가지고 특히, 비교를 많이 만들 수 있습니다.
효과적인 구현 방법은 무엇입니까? 둘 다 두 객체를 비교 한 다음 해당 비교 메소드를 사용하여 고유 한 객체 세트를 생성합니다.
편집 : 간단한 구현을 시도했습니다.
>>>a = Student("sample", 1234, 18) >>>b = Student("sample", 1234, 18) >>>students = set() >>>students.add(a) >>>b in students False >>>b == a True
내가 잘못 했나요?
왜 사용하지를 내장 세트의 형태? 회원 테스트는 순수 Python에서 기대하는 것보다 훨씬 효율적입니다. –
@omrib 따라서 각 학생 목록을 반복 한 다음 newSet.add (student)를 호출하는 것은 좋은 결과입니다. – MxyL
@agf, 오, 나는 아이템이 세트에 존재하는지 아닌지를 체크하는 것만으로 충분하다고 생각했다. 예 : "회원 테스트" – MxyL