[GO] Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren

Ausführungsumgebung

python 3.7.3

Was du machen willst

Verwenden Sie Prioritätswarteschlangen mit Python. Ich möchte es ein wenig anwenden, zum Beispiel meine eigenen Objekte sortieren.

Was ist eine Prioritätswarteschlange?

Wird auch als Prioritätswarteschlange bezeichnet. Die zu verwendende Szene ist, wenn Sie sortieren möchten, während sich die Anzahl der Elemente ändert. Oder wenn Sie der Liste ein Element hinzufügen möchten, während Sie es sortiert halten.

Da verschiedene andere Personen Referenzartikel geschrieben haben, werde ich die Details weglassen. (https://qiita.com/ell/items/fe52a9eb9499b7060ed6)

Ich möchte meine eigenen Objekte sortieren.

Versuchen Sie, Objekte der Name-Klasse mit zwei Attributen, Vorname und Nachname, nach verschiedenen Bedingungen zu sortieren.

Generieren Sie zunächst die folgende Klasse als Basis.


class Name(object):
    def __init__(self,first_name,last_name):
        self.first_name = first_name
        self.last_name = last_name
    
    def __lt__(self,other):
        return other.first_name > self.first_name
    
    def __repr__(self):
        return self.first_name + " " + self.last_name

Das Herzstück dieser Zeit ist eine spezielle Methode namens lt. Sie können festlegen, was es bedeutet, kleiner als Sie zu sein. (Es gibt auch viele andere spezielle Methoden. Bitte probieren Sie sie aus. https://blog.codecamp.jp/python-class-code)

Lassen Sie uns tatsächlich mit heapq sortieren.

from heapq import heapify,heappush,heappop
name1 = Name("james","smith")
name2 = Name("john","johnson")
name3 = Name("robert","williams")
name4 = Name("michael","brown")
name5 = Name("william","jones")
name6 = Name("david","brown")
name7 = Name("james","miller")
name8 = Name("david","davis")

name_list = [name1,name2,name3,name4,name5,name6,name7,name8]
heapify(name_list)
for i in range(len(name_list)):
    print(heappop(name_list))

Weitere Informationen zur Verwendung von heapq finden Sie im offiziellen Dokument. → https://docs.python.org/ja/3/library/heapq.html

Klicken Sie hier für Ausführungsergebnisse david brown david davis james miller james smith john johnson michael brown robert williams william jones

Da die Methode lt so eingestellt ist, dass die Größe nur anhand des Vornamens beurteilt wird, können Sie sehen, dass die Vornamen in aufsteigender Reihenfolge angeordnet sind.

Versuchen Sie sich zu bewerben

Versuchen Sie als Übung, zuerst nach dem Vornamen und dann nach dem Nachnamen in die entgegengesetzte Richtung zu sortieren. Die erwartete Ausgabe ist:

david davis david brown james smith james miller john johnson michael brown robert williams william jones

Die Vornamen sind in aufsteigender Reihenfolge angeordnet, die Nachnamen jedoch in absteigender Reihenfolge. Im folgenden Code finden Sie eine Beispielimplementierung.

class Name(object):
    def __init__(self,first_Name,last_Name):
        self.first_Name = first_Name
        self.last_Name = last_Name
    
    def __lt__(self,other):
        if other.first_Name == self.first_Name:
            return other.last_Name < self.last_Name
        else:
            return other.first_Name > self.first_Name
    
    def __repr__(self):
        return self.first_Name +" "+ self.last_Name


from heapq import heapify,heappush,heappop
name1 = Name("james","smith")
name2 = Name("john","johnson")
name3 = Name("robert","williams")
name4 = Name("michael","brown")
name5 = Name("william","jones")
name6 = Name("david","brown")
name7 = Name("james","miller")
name8 = Name("david","davis")

name_list = [name1,name2,name3,name4,name5,name6,name7,name8]
heapify(name_list)
for i in range(len(name_list)):
    print(heappop(name_list))

Danke, dass du bis zum Ende zugesehen hast Wenn Sie möchten, bitte LGTM (sieht gut aus für mich) Wenn Sie einen Fehler machen, weisen Sie bitte darauf hin.

Recommended Posts

Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
[Python] Anmelden Ihres eigenen Moduls
Ali-Buch in Python: Selbstimplementierung der Prioritätswarteschlange
Versuchen Sie, sich mit Python bei qiita anzumelden
Erstellen Sie Ihre eigenen Linux-Befehle in Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
Versuchen Sie, Ihr Tagebuch mit Python zu durchsuchen
Holen Sie sich Ihre eigene IP-Adresse in Python
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Verfolgen Sie Objekte in Ihrem Video mit OpenCV Tracker
Erstellen Sie schnell Ihr eigenes Modul mit setuptools (Python)
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Versuchen Sie es mit Python.
Grundlegende Sortierung in Python
Verarbeitung in Python beenden
Versuchen Sie gRPC in Python
Probieren Sie 9 Slices in Python aus
Ablauf beim Erstellen eines eigenen Pakets mit setup.py mit Python
Memo zum Erstellen einer eigenen Box mit Peppers Python
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.
Rufen wir Ihre eigene C ++ - Bibliothek mit Python auf (Einstellungen)
Versuchen Sie, assoziativen Speicher durch Hop-Field-Netzwerk in Python zu implementieren
Versuchen Sie, Python mit pybind11 in ein C ++ - Programm einzubetten
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Versuchen Sie, die LED in Ihren eigenen PC einzubauen (leicht)
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
Versuchen Sie, Python in der mit pipenv erstellten Django-Umgebung auszuführen
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Schaben mit Selen in Python
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Bis Sie Ihre eigene Python-Bibliothek mit pip installieren können
Debuggen mit pdb in Python
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
Umgang mit Sounds in Python
Sortieren von Bilddateien mit Python (2)
Scraping mit Selen in Python
Sortieren von Bilddateien mit Python (3)
Objektäquivalenzbeurteilung in Python
Techniken zum Sortieren in Python
Versuchen Sie LINE Notify mit Python
Scraping mit Tor in Python
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Kombiniert mit Ordnungszahl in Python
Stapel und Warteschlange in Python
Versuchen Sie, Python mit Try Jupyter auszuführen
Lassen Sie uns Yuma in Python 3 implementieren
Lassen Sie uns rote Objekte mit Python erkennen
Versuchen Sie die Gesichtserkennung mit Python
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python