Hogyan tudnék, (Pythonba) egy listában kikeresni a maximum értéket?
Listánál ott a max(lista) metódus:
Ha kulcs-érték párból áll az adatstruktúrád, azt könyvtárnak (dictionary) hívják:
Ha arra engeded a max metódust, alapértelmezetten a kulcsokból választja ki a maximum kulcsot:
>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':300}
>>> max (stats)
'd'
ha az értékre vagy kíváncsi, használd a key argumentumnál a könyvtár get() metódusát:
>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':300}
>>> max (stats, key=stats.get)
'b'
Forrás: [link]
Jól értem, hogy az eredeti megvalósítás lista a listában? Erre tényleg kényelmesebb megoldás a dictionary típus.
Ha így néz ki, amivel dolgozol: [[szin1, érték1], [szín2, érték2], [szín2, érték3]]
Akkor sorted(listanév, key=lambda x: x[1], reverse=True)[0] megadja azt a PÁRT, amelyikben a legnagyobb az érték.
dict(listanév) paranccsal könnyen átalakíthatod szótárrá. Ekkor max(listanév) megadja a legnagyobb értékhez tartozó SZÍNT, az értéke pedig szótérnév[szín] paranccsal érhető el.
Köszönöm ez a szótárrá alakítás sokat segített. De nem tudnám a szín2-nek valahogy a maximumát venni?
Mert nekem abból a színből kellene a legnagyobb érték ami a legtöbbször előfordul. És ha a szín1 tartalmazza a legnagyobb értéket és ráteszek egy max keresést akkor azt kapom vissza nekem meg a szín2 legnagyobb értéke kellene.
Ha jól értem mindegyik szín többször szerepelhet. Akkor viszont a szótárrá alakítás nem fog működni mert mindegyik színhez csak egy értéket rendelhetünk, el fognak veszni az adatok. Két lépésben lehet megcsinálni, először meg kell határozni a leggyakrabban előforduló színt, aztán kiválasztani a színhez tartozó legnagyobb értéket.
A leggyakoribb elem kiválasztására van függvény a collections module-ban (Counter osztály most_common metódusa).
from collections import Counter
a = [("a",2),("a",3),("b",4)]
max(i[1] for i in a if i[0] == Counter(tuple(zip(*a))[0]).most_common(1)[0][0])
# 3 a kimenet
Ha szótárrá alakítod akkor elvesznek adatok:
dict(a)
# {'a': 3, 'b': 4}
A Counter(x).most_common(1)[0][0] ugyan azt csinálja mint a max(set(x), key=x.count) de sokkal gyorsabban, ezért érdemes inkább azt használni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!