Ondersteuning > Programmeren
Python probleempje
(1/1)
BaukeP:
Ik gebruik de volgende functie om de max van bijv. kolom 4 te krijgen van een list of lists.
def get_max_by_col(li, col):
return max(li, key=lambda x: float(x[col]))[col]
en dat gaat prima!
Ik wil echter ook het eerste veld van de gevonden max list. Is in dit geval de datum.
Een maximale waarde is leuk, maar de datum waarop niet minder!
Dus in de laatste regel ook veld 1:
iets als: return datum,max(li, key=lambda x: float(x[col]))[col] of
return li[?][0],max(li, key=lambda x: float(x[col]))[col]
Het lukt mij echter niet. Graag wat hulp.
Alvast bedankt, Bauke
MKe:
Kun je niet beter listcomprehensions gebruiken?
Ik zou het zo doen:
--- Code: ---def get_max_by_column(li, column):
max_value = max(li, key=lambda x: float(x[col]))[col]
datums = [i[0] for i in li if value == max_value]
# datums is een lijst voor het geval de max_value meerdere keren voorkomt
return datums, max_value
--- Einde van code ---
Voor nette code is het trouwens zowiezo beter om dit te scheiden. Al die lambda's enzo in een regel maakt het zeer onleesbaar.
BaukeP:
Bedankt MKe,
Ik ga het uitproberen!
Bauke
BaukeP:
MKe,
Het werkt (uiteraard) uitstekend. Bedankt
Bauke
MKe:
Graag gedaan.
Navigatie
[0] Berichtenindex
Naar de volledige versie