像大多数事情一样,有不止一种可能的方法。
使用类
最简洁的方法可能是创建一个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)
使用字典
当然,由于您对类所做的只是存储一组属性,因此您也可以只使用 dicts 代替 - 您只是失去了刚性(并获得了一些灵活性)。模仿上面的代码,但使用 dicts:
{'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'])