Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnék, (Pythonba) egy...

Hogyan tudnék, (Pythonba) egy listában kikeresni a maximum értéket?

Figyelt kérdés
Ha a lista minden eleme egy párból áll ami (színt, értéket) tartalmaz. És adott színből kéne kikeresnem a legnagyobb értéket. Ezt mivel lehetne megoldani?
2015. febr. 22. 00:24
 1/5 anonim ***** válasza:

Listánál ott a max(lista) metódus:

[link]

[link]

[link]


Ha kulcs-érték párból áll az adatstruktúrád, azt könyvtárnak (dictionary) hívják:

[link]

[link]


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]

2015. febr. 22. 00:44
Hasznos számodra ez a válasz?
 2/5 Ozmium42 ***** válasza:

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.

2015. febr. 22. 03:47
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

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.

2015. febr. 22. 13:03
 4/5 Ozmium42 ***** válasza:
Ott van: szótár[szín] -> érték
2015. febr. 22. 13:05
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

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.

2015. febr. 22. 15:31
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!