我正致力于扩展日志记录系统。我正在编写一个函数,当用户运行代码时,我们会查看运行日志,如果有错误,请将它们与运行日志本身一起收集。
我已经能够执行此操作,并且有一个运行日志和它们包含的错误消息的字典,一些错误在多个日志中重复,所以我想给用户一个'样品'记录每条错误消息,以及我们找到的错误数量。
我的词典就像
{
'run_log_1': 'Syntax error on abc',
'run_log_3': 'Syntax error on abc',
'run_log_17': 'Expected int base 10',
'run_log_23': 'Syntax error on xyz'
}
你明白了。
我想格式化输出,以便用户获得:
Error: Syntax error on abc
Total 2, Sample: run_log_3
Error: Expected int base 10
Total 1, Sample: run_log_17
我怎么能这样做?
答案 0 :(得分:0)
您可以制作一个额外的字典,并将第一个字典的值作为键放在其中:
counts = {}
for sample, error in errordict.items():
if error not in counts:
counts[error] = [0, sample]
counts[error][0] += 1
然后新的dict将包含所需的计数以及每个计数的样本。
答案 1 :(得分:0)
您可以使用一些特殊的集合来完成此任务。
import collections
your_log_dict = dict(
run_log_1='Syntax error on abc',
run_log_3='Syntax error on abc',
run_log_17='Expected int base 10')
counts = collections.Counter(your_log_dict.values())
samples = {v:k for k,v in your_log_dict.items()}
for error, count in counts.items():
sample = samples[error]
print('Error: {}\nTotal {}, Sample: {}\n'.format(error, count, sample))