【发布时间】:2023-03-22 12:14:01
【问题描述】:
我有下一个代码:
class Petshop():
def __init__(self, entryDate, name, ownerName):
self.entryDate = entryDate
self.name = name
self.ownerName = ownerName
class Pets():
def __init__(self):
self.petsList = []
def addPets(self, entryDate, name, ownerName):
entry_pet = Petshop(entryDate, name, ownerName)
self.petsList.append(entry_pet)
def printPets(self):
for pet in self.petsList:
if pet.entryDate == pet.entryDate:#Here I try to sort by date
print("---------------",pet.entryDate,'------------------')
print("Name:", pet.name)
print("Owner name:", pet.ownerName)
pet = Pets()
pet.addPets('04/13/2021','Pinky', 'David Smith')
pet.addPets('07/10/2020', 'Charlie', 'Joe Davis')
pet.addPets('12/22/2018', 'Teddy', 'Carl Johnson')
pet.addPets('07/10/2020', 'Kenny', 'Susan Jones')
pet.addPets('04/13/2021','Max', 'Bryan Miller')
pet.addPets('07/10/2020', 'Buddy', 'Kathy Brown')
pet.printPets()
使用该代码我想按日期对宠物条目进行排序,因此例如我希望打印下一个:
--------------- 04/13/2021 ------------------
Name: Pinky
Owner name: David Smith
Name: Max
Owner name: Bryan Miller
--------------- 07/10/2020 ------------------
Name: Charlie
Owner name: Joe Davis
Name: Kenny
Owner name: Susan Jones
Name: Buddy
Owner name: Kathy Brown
--------------- 12/22/2018 ------------------
Name: Teddy
Owner name: Carl Johnson
但我不是这样打印每个对象,这不是我所期望的:
--------------- 04/13/2021 ------------------
Name: Pinky
Owner name: David Smith
--------------- 07/10/2020 ------------------
Name: Charlie
Owner name: Joe Davis
--------------- 12/22/2018 ------------------
Name: Teddy
Owner name: Carl Johnson
--------------- 07/10/2020 ------------------
Name: Kenny
Owner name: Susan Jones
--------------- 04/13/2021 ------------------
Name: Max
Owner name: Bryan Miller
--------------- 07/10/2020 ------------------
Name: Buddy
Owner name: Kathy Brown
我尝试在printPets() 中进行某种排序,但它不起作用。
所以我来这里寻求帮助。谢谢!
【问题讨论】:
-
你为什么期望在所有宠物的循环中比较一个宠物的 entryDate 与它自己,以对任何东西进行排序?你也没有做任何分组,你得到的输出不应该是意外的。
-
如果您使用
datetime对象来存储您的日期,您可以使用datetime对象的排序属性,而无需使用字符串。
标签: python list sorting dictionary oop