组织用于处理统计信息的python代码
我将根据以下信息创建统计数据:哪些构建成功或失败,以及每个项目有多少构建成功 我根据我看到的新项目和内部处理的统计信息创建ProjectStat类。为了打印总体统计数据,我需要遍历所有ProjectStat实例。为了打印每个项目的成功统计数据,我需要再次通过它们,等等,任何类型的统计数据。我的问题是简化处理循环的方式,即不要每次都通过字典。也许使用decorator或decorator模式将是一种类似python的方式?如果ProjectStat的实例数量动态更改,如何使用它们 代码如下:组织用于处理统计信息的python代码,python,Python,我将根据以下信息创建统计数据:哪些构建成功或失败,以及每个项目有多少构建成功 我根据我看到的新项目和内部处理的统计信息创建ProjectStat类。为了打印总体统计数据,我需要遍历所有ProjectStat实例。为了打印每个项目的成功统计数据,我需要再次通过它们,等等,任何类型的统计数据。我的问题是简化处理循环的方式,即不要每次都通过字典。也许使用decorator或decorator模式将是一种类似python的方式?如果ProjectStat的实例数量动态更改,如何使用它们 代码如下: cl
class ProjectStat(object):
projectSuccess = 0
projectFailed = 0
projectTotal = 0
def addRecord(self, record):
if len(record) == 5: record.append(None)
try:
(datetime, projectName, branchName, number, status, componentName) = record
except ValueError:
pass
self.projectTotal += 1
if status == 'true': self.projectSuccess += 1
else: self.projectFailed += 1
def addDecorator(self, decorator):
decorator = decorator
def readBuildHistoryFile():
dict = {}
f = open("filename")
print("reading the file")
try:
for line in f.readlines():
#print(line)
items = line.split()
projectName = items[1]
projectStat = dict[projectName] = dict.get(projectName, ProjectStat())
projectStat.addRecord(items)
print(items[1])
finally:
f.close()
success = 0
failed = 0
total = 0
for k in dict.keys():
projectStat = dict[k]
success += projectStat.projectSuccess
failed += projectStat.projectFailed
total += projectStat.projectTotal
print("Total: " + str(total))
print("Success: " + str(success))
print("Failed: " + str(failed))
if __name__ == '__main__':
readBuildHistoryFile()
我不确定我是否理解这个问题,但我还是会尝试回答:) 备选案文1:
total = sum([project.projectTotal for project in dict.values()])
success = sum([project.projectSuccess for project in dict.values()])
failed = sum([project.projectFailed for project in dict.values()])
备选案文2:
(total,success,failed) = reduce (lambda x,y:(x[0]+y[0],x[1]+y[1],x[2]+y[2]), [(project.projectTotal,project.projectSuccess,project.projectFailed) for project in dict.values()])
你能修一下压痕吗?怎么了?这是我的第一篇文章,我所做的只是复制,因为这是接口允许的。如何在页面上的代码中将选项卡指定为选项卡?谢谢。获取信息的好技巧。现在,如果我想获得每个项目的统计数据,那么我将向ProjectStat添加print方法,并使用您的建议调用它。我唯一关心的是我是否需要每次翻阅字典?为了得到总的,成功,失败,然后统计每个项目后,我将添加打印方法,我需要4次指定为字典的周期,如果将有很多记录,然后它可以消耗。你认为呢?我认为这不会是一个缓慢的行动。首先尝试一下,只有当您遇到性能问题时,才尝试进行优化。