Python:与Coun一起在字典中打印唯一值

2024-05-28 18:50:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个日志系统的扩展。我正在编写一个函数,这样当用户运行代码时,我们就可以查看运行日志,如果有错误,就将它们与运行日志一起收集。你知道吗

我已经能够做到这一点,并有一个运行日志和错误消息,他们所包含的dict,一些错误是重复的多个日志,所以我想给用户一个'样本'日志为每个错误消息,以及我们发现的错误数量。你知道吗

我的字典有点像

{
    '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

我该怎么办?你知道吗


Tags: run用户log消息baseon错误error
2条回答

您可以制作一个额外的dict并将第一个dict的值作为键放入其中:

counts = {}
for sample, error in errordict.items():
   if error not in counts:
      counts[error] = [0, sample]
   counts[error][0] += 1

新的dict将包含所需的计数以及每个计数的一个样本。你知道吗

您可以为此任务使用一些特殊集合。你知道吗

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))

相关问题 更多 >

    热门问题