Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Python probleempje  (gelezen 4274 keer)

Offline BaukeP

  • Lid
Python probleempje
« Gepost op: 2022/11/03, 17:43:09 »
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
« Laatst bewerkt op: 2022/11/03, 17:45:25 door BaukeP »

Offline MKe

  • Lid
Re: Python probleempje
« Reactie #1 Gepost op: 2022/11/03, 20:48:42 »
Kun je niet beter listcomprehensions gebruiken?

Ik zou het zo doen:

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

Voor nette code is het trouwens zowiezo beter om dit te scheiden. Al die lambda's enzo in een regel maakt het zeer onleesbaar.
« Laatst bewerkt op: 2022/11/03, 21:12:07 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline BaukeP

  • Lid
Re: Python probleempje
« Reactie #2 Gepost op: 2022/11/03, 22:10:38 »
Bedankt MKe,
Ik ga het uitproberen!

Bauke

Offline BaukeP

  • Lid
Re: Python probleempje
« Reactie #3 Gepost op: 2022/11/16, 17:29:04 »
MKe,
Het werkt (uiteraard) uitstekend. Bedankt

Bauke

Offline MKe

  • Lid
Re: Python probleempje
« Reactie #4 Gepost op: 2022/11/18, 13:48:46 »
Graag gedaan.