通过重写 __lt__ 方法,可以达到类似于Java中compareTo的效果
class Fruit:
def __init__(self, name, count, money):
self.name = name
self.count = count
self.money = money
def __lt__(self, other):
if self.money == other.money: # money 相同比较 count,count 也相同则比较 name
if self.count == other.count:
return self.name < other.name # 升序
return self.count > other.count # 降序
return self.money > other.money # 降序
fruit = []
while True:
data = input().split(' ')
if data[0] == 'None':
break
for i in fruit:
if i.name == data[0]:
i.count += 1
i.money += float(data[1])
break
else:
# src = {'name': data[0], 'count': 1, 'money': float(data[1])}
src = Fruit(data[0], 1, float(data[1]))
fruit.append(src)
sum_money = 0
avg_money = 0
all_count = 0
max_count = fruit[0].count
fruit.sort()
for i in fruit:
sum_money += i.money
all_count += i.count
if max_count < i.count:
max_count = i.count
print(i.name + ' ' + str(i.count) + ' ' + str(i.money))
avg_money = sum_money / all_count
print(round(avg_money, 2))
for i in fruit:
if max_count == i.count:
print(i.name)
"""
apple 25.0
pear 8.0
apple 5.0
pear 2.0
banana 10.0
orange 30.0
None
"""