Max Wert innerhalb einer Liste von Tupel-Listen

7

Ich habe ein Problem, den höchsten Wert in einer dynamischen Liste von Tupel-Listen zu erhalten.
Die Liste kann wie folgt aussehen:

%Vor%

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.

%Vor%

Es macht immer noch was ich will, aber ist es nicht zu schmutzig?

    
SnowBallz 10.02.2011, 23:34
quelle

2 Antworten

16

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.

  • Reduziere die Liste der Listen auf eine Liste von Tupeln
  • Finde den maximalen Wert

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%     
dfb 10.02.2011, 23:43
quelle
4

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.

    
ttreitlinger 10.02.2011 23:53
quelle

Tags und Links