Ich habe ein Problem, den höchsten Wert in einer dynamischen Liste von Tupel-Listen zu erhalten.
Die Liste kann wie folgt aussehen:
Jetzt durchlaufe ich die Liste, um den höchsten Wert (Integer) zu erhalten:
%Vor%Ich habe viel versucht, um den maximalen Wert zu bekommen, aber ich fand keine Schlussfolgerung zu meinem Problem. Ich weiß, ich muss jedes Tupel in der Liste durchlaufen und es mit dem nächsten vergleichen, aber es weiß nicht, wie es richtig zu codieren ist.
Auch kann ich die Funktion max()
verwenden, aber es funktioniert nicht mit Strings und ganzen Zahlen. f.
a = [ ('a',5),('z',1)]
- & gt; Ergebnis ist max(a) ---> ('z',1)
obv 5 & gt; 1 aber z & gt; a also habe ich versucht, die max-funktion mit max(a, key=int)
zu erweitern, aber ich bekomme einen Type Error.
Ich hoffe, Sie können verstehen, was ich will; -)
AKTUALISIEREN
Danke bis jetzt.
Wenn ich itertools.chain(*adymlist)
und max(flatlist, key=lambda x: x[1])
verwende, bekomme ich eine Ausnahme wie: max_word = max (flatlist, key = lambda x: x [1])
TypeError: 'int' -Objekt ist abbildbar
ABER Wenn ich itertools.chain(adymlist)
verwende, funktioniert es gut. Aber ich weiß nicht, wie man alle Ganzzahlen aus jedem Tupel der Liste summiert. Ich brauche deine Hilfe, um es herauszufinden.
Ansonsten habe ich einen Workaround für itertools.chain(*adymlist)
geschrieben, um die Summe aller ganzen Zahlen und die höchste ganze Zahl in dieser Liste zu erhalten.
Es macht immer noch was ich will, aber ist es nicht zu schmutzig?
Um zu verdeutlichen, sieht es so aus, als hätten Sie eine Liste von Tupellisten. Es sieht nicht so aus, als ob wir uns darum kümmern, in welcher Liste sie sich befinden, daher können wir dies in zwei Schritten vereinfachen.
Der erste Teil kann über itertools.chain
erreicht werden (siehe z. B. Abflachen eines flachen Liste in Python )
Die zweite kann durch max gelöst werden, Sie haben die richtige Idee, aber Sie sollten eine Funktion übergeben, anstatt den Typ, den Sie wollen. Diese Funktion muss den Wert zurückgeben, den Sie eingegeben haben, in diesem Fall der zweite Teil des Tupels
%Vor%Korrektur
Ich lese Ihre Frage noch einmal - Suchen Sie den Höchstwert in jeder Unterliste? Wenn dies der Fall ist, ist nur der zweite Teil anwendbar. Iterieren Sie einfach Ihre Liste für jede Liste
Ein bisschen pythonischer als das, was Sie gerade haben möchten
%Vor%oder
%Vor%Wie spintheblack sagt, haben Sie eine Liste von Tupellisten. Ich nehme an, dass Sie nach dem höchsten ganzzahligen Wert aller Tupel suchen.
Sie können über die äußere Liste und dann über die Liste der Tupel Tupel wie folgt iterieren:
%Vor%Dies ist ein wenig ausführlicher, aber vielleicht einfacher zu verstehen.