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.
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