Ich habe eine Sammlung von Objekten in einem Wörterbuch gespeichert, und ich möchte den maximalen Wert eines bestimmten Attributs abrufen. Bei den Objekten handelt es sich um Cookies (denken Sie an Chocolate Chip), und jeder Cookie hat seine eigene Temperatur, Wärmekapazität, Chargennummer usw. Die Chargennummer beschreibt, aus welchem Satz von Keksen er den Ofen verlässt.Maximaler Wert eines Attributs von Objekten in einem Wörterbuch finden
class Cookie:
def __init__(self, density, specificheat, batch):
self.rho = density
self.cp = specificheat
self.batch = batch
self.volume = 1.2e-5 # m^3
self.surfarea = 4.9e-3 # m^2
...
Ich möchte die maximale Chargennummer im Wörterbuch finden. Ich weiß, das wäre einfach, wenn ich eine Liste verwende, ich könnte einfach operator.attrgetter ('batch') verwenden, um die Liste zu sortieren und den Wert zu erhalten. Um jedoch ein Wörterbuch verwenden, wird diese Zeile nicht:
sorted(cookies, key=operator.attrgetter('batch'))
ich im Wörterbuch einer for-Schleife und gehen durch jedes einzelne Objekt einrichten könnte, aber ich fühle es einen besseren Weg, dies zu tun ist. Ich möchte vermeiden, zu einer Liste zu wechseln, weil ich eine Optimierung durchführe, die Cookies in Kästchen sortiert, und es ist schneller, Daten aus einem Wörterbuch als aus einer Liste abzurufen, wenn Sie sich um 2000 Cookies kümmern müssen. (Ich habe es mit timeit()) zeitlich abgestimmt. Ich habe nach ähnlichen Fragen auf Stackoverflow gesucht, aber die meisten von ihnen scheinen in Javascript zu sein. Die Python-Fragen, die ich gefunden habe, sind für Wörterbücher, die keine Objekte wie meine speichern. Jede Hilfe würde sehr geschätzt werden!
Vielen Dank! Das hat bei mir funktioniert: cookie_maxbatch = max (cookies.values (), key = operator.attrtter ('batch')) nbatches = cookie_maxbatch.getbatch() – magnoliafork
@magnoliafork, keine Sorge, gern geschehen. –
Um das Offensichtliche zu sagen, die letztere Technik ist nicht geeignet, wenn Cookies jemals entfernt oder aktualisiert werden – FujiApple