Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Usuń duplikaty z listy obiektów za pomocą Pythona

set(list_of_objects) usunie duplikaty tylko wtedy, gdy wiesz, co to jest duplikat, to znaczy, że musisz zdefiniować unikalność obiektu.

Aby to zrobić, musisz sprawić, by obiekt był haszowalny. Musisz zdefiniować oba __hash__ i __eq__ metoda, oto jak:

http://docs.python.org/glossary.html#term-hashable

Chociaż prawdopodobnie będziesz musiał tylko zdefiniować __eq__ metoda.

EDYTUJ :Jak zaimplementować __eq__ metoda:

Musisz znać, jak wspomniałem, definicję niepowtarzalności swojego obiektu. Załóżmy, że mamy Księgę z atrybutami nazwisko_autora i tytuł, których połączenie jest unikalne (więc możemy mieć wiele książek autorstwa Stephena Kinga i wiele książek o nazwie Lśnienie, ale tylko jedną książkę pod tytułem Lśnienie autorstwa Stephena Kinga), a następnie implementacja wygląda następująco:

def __eq__(self, other):
    return self.author_name==other.author_name\
           and self.title==other.title

Podobnie, w ten sposób czasami implementuję __hash__ metoda:

def __hash__(self):
    return hash(('title', self.title,
                 'author_name', self.author_name))

Możesz sprawdzić, czy jeśli utworzysz listę 2 książek o tym samym autorze i tytule, obiekty książki będą takie same (z is operatora) i równe (z == operator). Również, gdy set() zostanie użyty, usunie jedną książkę.

EDYTUJ :To jedna z moich starych odpowiedzi, ale dopiero teraz zauważyłem, że zawiera błąd, który został poprawiony przez przekreślenie w ostatnim akapicie:obiekty z tym samym hash() nie da True w porównaniu z is . Hashability obiektu jest jednak używane, jeśli zamierzasz używać ich jako elementów zestawu lub jako kluczy w słowniku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java — import MySQL do Hive, w którym MySQL działa w systemie Windows i Hive działa w systemie Cent OS (Horton Sandbox)

  2. Użyj relacyjnych baz danych MySQL na Ubuntu 9.10 (Karmic)

  3. Używanie utf8mb4 z php i mysql

  4. Odkażanie parametrów użytkownika MySQL

  5. gcc nie kompiluje i nie uruchamia bibliotek MySQL C