Vorsichtsmaßnahmen beim Übergeben von def an sortierte und gruppierte Funktionen in Python? ??

Ich lerne Python, aber ich war süchtig und steckte ungefähr eine Stunde lang fest. Ich habe es vorerst gelöst, aber ich kann nichts dagegen tun, und wenn jemand diesen Mechanismus versteht, wäre ich dankbar, wenn Sie mir etwas beibringen könnten, also werde ich es schreiben.

Das folgende Programm mischt Spieler aus Los Angeles und New York und unterteilt sie in A-Block und B-Block, indem Spielernamen und Blöcke kombiniert werden.

groupLeague.py


import itertools
LA = [('Jake', 'B'), ('Elwood', 'A')]
NY = [('James', 'A'), ('Carry', 'B'), ('Steven', 'B')]
data = itertools.chain(LA, NY)

def getSortKey(item):
    return item[1]

grp = itertools.groupby(sorted(data, key=getSortKey(data), getSortKey(data))

Aber wenn ich das mache, TypeError: 'itertools.chain' object is not subscriptable Wird mit einem Fehler gespielt.

Ich habe es überhaupt nicht verstanden und war wirklich begeistert, aber als ich mir ein anderes Beispielprogramm ansah und es erneut besuchte, funktionierte es. In der letzten Zeile

grp = itertools.groupby(sorted(data, key=getSortKey(data)), getSortKey(data))

,

grp = itertools.groupby(sorted(data, key=getSortKey), getSortKey)

Und bis auf das Argument von getSortKey funktionierte es normal.

Das Programm hat vorerst funktioniert, aber ich habe keine Ahnung von diesem Mechanismus. Ich verstehe, dass Sie zusätzlich zum Schlüsselwert eine "Funktion, die einen Schlüssel erhalten kann" als zweites Argument "Schlüsselteil" von groupby angeben können. Wenn Sie jedoch eine Funktion angeben, warum müssen Sie kein Argument schreiben? Oder ist es ein Fehler, wenn ich ein Argument schreibe? ?? Soweit ich die Operation bestätigen kann, denke ich, dass das erste Argument "iterierbarer Teil" (sortiert ~) automatisch als Argument behandelt wird, aber es gab keine solche Beschreibung im Dokument.

【Referenz】 Python-Dokumentation itertools --- Itertool-Generierungsfunktion für eine effiziente Schleifenausführung

Gleiches gilt für die sortierte Funktion. Im Teil von key = getSortkey scheint das Argument automatisch die Daten des ersten Arguments zu übernehmen, aber ich verstehe den Mechanismus nicht (schließlich wurde er im Dokument nicht beschrieben).

【Referenz】 Integrierte Funktionen der Python-Dokumentation sortiert

Was für ein Mechanismus ist das ohne ein Argument ...? ?? Ich habe es nachgeschlagen, aber ich konnte es einfach nicht herausfinden. Es tut mir sehr leid, dass dies eine rudimentäre Frage ist, aber wenn Sie es wissen, wäre es sehr dankbar, wenn Sie mich unterrichten könnten.

Wie können wir mit dieser kniffligen Spezifikation umgehen?

Recommended Posts

Vorsichtsmaßnahmen beim Übergeben von def an sortierte und gruppierte Funktionen in Python? ??
Python 3 Sortier- und Vergleichsfunktionen
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Über Python-Diktat und sortierte Funktionen
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
Vorsichtsmaßnahmen beim Festlegen von Standardwerten für Argumente in Python-Funktionsdefinitionen
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Verwendung ist und == in Python
[Tipps] Leicht lesbares Schreiben beim Verbinden von Funktionen in Python
So generieren Sie eine Sequenz in Python und C ++
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
[Python] Vorsichtsmaßnahmen beim Zuweisen von Werten zu mehrdimensionalen Arrays
Senden Sie eine Nachricht an Skype und Chatwork in Python
Fehler beim Versuch, psycopg2 in Python zu installieren
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
[Python] Vorsichtsmaßnahmen beim Erfassen von Daten durch Scraping und Einfügen in die Liste
Sortierte Liste in Python
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
Dinge, die Sie bei der Entwicklung von Crawlern in Python beachten sollten
Unterschiede im Verhalten zwischen den Operatoren append () und "+ =" beim Hinzufügen von Daten zu einer Liste in Python
Vorsichtsmaßnahmen beim Umgang mit ROS MultiArray in Python
Dinge, die Sie beim Kopieren von Python-Listen beachten sollten
Beachten Sie beim Initialisieren einer Liste in Python
[Einführung in Python] Zusammenfassung der Funktionen und Methoden, die häufig in Python vorkommen [Problemformat]
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
Hinweise zum Hinzufügen von Setter und Deleter in einer abgeleiteten Klasse zur getter-Eigenschaft der Basisklasse
Beenden bei Verwendung von Python in Terminal (Mac)
Dinge, die Sie bei der Verarbeitung von Zeichenfolgen in Python2 beachten sollten
Dinge, die Sie bei der Verarbeitung von Zeichenfolgen in Python 3 beachten sollten
Ich möchte am Ende etwas mit Python machen
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Vorsichtsmaßnahmen bei der Eingabe von CSV mit Python und der Ausgabe an json, um exe zu erstellen
Ein Skript, das bis zu 5 Sekunden zählt und in Blenders Python stoppt
Versuchen Sie es mit GUI, PyQt in Python
Anwendung zum Anzeigen und Durchsuchen lokaler Memos (Tagebuch) in Python
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Zeigen Sie Zahlen und Zeichen an, die Variablen im Python-Druck zugewiesen sind
Tipps zum Codieren kurz und einfach in Python zu lesen
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Eine Standardmethode zum Entwickeln und Verteilen von Paketen in Python
Nützliche Tricks in Bezug auf Listen und Anweisungen in Python
Praktische Schreibmethode beim kontinuierlichen Anhängen an die Liste in Python
Was tun, wenn in Python "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" angezeigt wird?
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
Einführung in die Effektüberprüfung Schreiben der Kapitel 4 und 5 in Python
Probleme und Lösungen bei der Frage nach MySQL db in Python 3
Vorsichtsmaßnahmen bei der Verwendung von Python mit AtCoder
Objektorientiert in C-Sprache: "○ ✕ game" wurde überarbeitet und nach Python portiert
Vorsichtsmaßnahmen beim Ändern der Unix-Zeit in Datetime-Typ in Pandas
Dinge, die Sie bei der Verwendung von CGI mit Python beachten sollten.
Ausführen externer Shell-Skripte und -Befehle in Python
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Mal sehen, wie def in Python verwendet wird
Vorsichtsmaßnahmen für das TensorFlow-Upgrade (auf 1.3)
So löschen Sie stdout in Python
Überschreiben Sie Bibliotheksfunktionen in Python