У меня есть коллекция объектов, хранящихся в словаре, и я хочу получить максимальное значение для определенного атрибута. Объекты - куки (думаю, шоколадный чип), и каждый cookie имеет собственную температуру, теплоемкость, номер партии и т. Д. Номер партии описывает, какой набор куки он выходил из духовки.Поиск максимального значения атрибута объектов в словаре
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
...
Я хочу найти максимальное количество партий в словаре. Я знаю, что это было бы просто, если бы я использовал список, я мог бы просто использовать operator.attrgetter ('batch') для сортировки списка и получения значения. Однако, используя словарь, эта линия не работает:
sorted(cookies, key=operator.attrgetter('batch'))
Я мог бы создать для цикла и пройти через каждый отдельный объект в словаре, но я чувствую, что есть лучший способ сделать это. Я хочу избежать перехода на список, потому что я запускаю оптимизацию, сортирующую файлы cookie в ящики, и быстрее извлекать данные из словаря, чем из списка, когда вам приходится беспокоиться о 2000 куках. (Я приурочил его с помощью timeit()). Я искал похожие вопросы в Stackoverflow, но большинство из них, похоже, находятся в javascript. Вопросы Python, которые я нашел, предназначены для словарей, которые не хранят такие объекты, как мои. Любая помощь будет принята с благодарностью!
Спасибо! Это сработало для меня: cookie_maxbatch = max (cookies.values (), key = operator.attrgetter ('batch')) nbatches = cookie_maxbatch.getbatch() – magnoliafork
@magnoliafork, не беспокойтесь, пожалуйста. –
Чтобы указать на очевидное, последний метод не подходит, если файлы cookie удаляются или обновляются – FujiApple