我有一张这样的人和物的清单。。。你知道吗
class person:
monthlyTaskCount = []
def __init__(self, name):
self.name = name
bob = person("Bob Smith")
sam = person("Sam Jones")
amy = person("Amy Owen")
people = [bob,sam,amy]
我把它和一个任务列表进行比较,来统计和跟踪他们一个月完成了多少任务。。。你知道吗
for x in taskList: #contains x.personName, x.taskName, x.monthPerformed
for p in people:
if x.personName == p.name:
#append to p.monthlyTaskCount in some way
我被困住了,因为我无法想象一个适当的方法来跟踪逐月的数据,并最终得到类似于p。amy.monthlyTaskCount公司... 你知道吗
[11/2018:23, 12/2018:12, 1/2019:19, 2/2019:34]
(显示2018年11月完成的23项任务等)
我只是在寻找一种优雅的方式来存储这种格式的数据方面迷失了方向-例如,简单地将值附加到列表中会导致每月重复的条目,然后我必须在之后进行清理,所以我希望有人可以推荐一种数据结构来解决这个问题。你知道吗
我怀疑如果你使用字典来存储更多的数据,这个问题会更容易解决。例如,不是将
people
放在一个列表中,而是将它们放在一个按名称键入的字典中,您可以立即查找相应的person
实例,而不需要每次遍历列表。你知道吗类似地,每月计数应该是另一个字典,或者是一个字典子类型,比如
collections.Counter
(它是专门为计算事物而设计的)。你知道吗如何在类中设置
monthlyTaskCount
还有另一个问题:所有实例将共享同一个列表,因为它是作为类变量创建的。您可能应该将它的创建移到__init__
方法中,这样每个person
都可以获得自己的副本。你知道吗不管怎样,我的建议是:
通过改进的数据结构,您的记账变得简单:
相关问题 更多 >
编程相关推荐