Как и большинство вещей, существует более одного возможного подхода.
Использование класса
Вероятно, самым лучшим будет создать класс Car
.Вам не нужно переопределять операторы - просто имейте некоторые свойства и конструктор.
class Car:
def __init__(self, brand, model, hp):
self.brand = brand
self.model = model
self.hp = hp
Тогда, если вы хотите сравнить по модели:
car1 = Car('foo', 'bar', 23)
car2 = Car('baz', 'bar', 34)
if car1.model == car2.model:
# models are equal
Если у вас был списокиз Car
объектов, и хотел отсортировать их по лошадиным силам:
car1 = Car('foo', 'bar', 23)
car2 = Car('baz', 'bar', 34)
car3 = Car('baz', 'bar', 14)
car_list = [car1, car2, car3]
car_list.sort(key=lambda c: c.hp)
Использование dict
Конечно, поскольку все, что вы будете делать с классом, это хранить наборсвойства, вы могли бы просто использовать вместо этого диктовку - вы просто теряете жесткость (и получаете некоторую гибкость).Для имитации приведенного выше кода, но с диктовками:
{'brand': 'foo', 'model': 'bar', 'hp': 23}
Затем, если вы хотите сравнить по модели:
car1 = {'brand': 'foo', 'model': 'bar', 'hp': 23}
car2 = {'brand': 'baz', 'model': 'bar', 'hp': 34}
if car1['model'] == car2['model']:
# models are equal
Если у вас был список Car
объектовхотел отсортировать их по лошадиным силам:
car1 = {'brand': 'foo', 'model': 'bar', 'hp': 23}
car2 = {'brand': 'baz', 'model': 'bar', 'hp': 34}
car2 = {'brand': 'baz', 'model': 'bar', 'hp': 14}
car_list = [car1, car2, car3]
car_list.sort(key=lambda c: c['hp'])