繁体   English   中英

计算Python中字典键的唯一值的数量

[英]Count # of unique values for dictionary key in Python

我用从错误日志中提取的值创建了嵌套字典。

错误类型为“ Msg”和“ Cmd”

dict1 = {
    '1234': [
        ['2014-09-19 09:55:41', 1234, 'Msg', 'N/A', 'N/A'],
        ['2014-09-19 10:22:22', 123, 'Msg', 123, 'N/A'],
        ['2014-09-19 12:22:21', 1234, 'Cmd', 123, 'N/A']
    ]
}

我如何获得计数的代码是什么,以便我知道每个键存在每种错误类型的数量?

这是我到目前为止的内容:

from collections import Counter

dict2 = {}
for k in dict1:
        for v in k:
                dict2[str(k)].append(str(k),collection.Counter(v[k] for v in dict1))

请帮忙! 谢谢。

您可以遍历列表列表并创建一set错误类型,然后只需检查该错误类型的长度即可。 顾名思义,集合只能包含唯一的项目,因此您不会重复。

dict1 = {'1234': [['2014-09-19 09:55:41', 1234, 'Msg', 'N/A', 'N/A'],
                  ['2014-09-19 10:22:22', 123, 'Msg', 123, 'N/A'],
                  ['2014-09-19 12:22:21', 1234, 'Cmd', 123, 'N/A']]}

>>> set(i[2] for i in dict1['1234'])
set(['Msg', 'Cmd'])

>>> len(set(i[2] for i in dict1['1234']))
2

制作您在评论中描述的字典

dict1 = {'1234': [['2014-09-19 09:55:41', 1234, 'Msg', 'N/A', 'N/A'],
                  ['2014-09-19 10:22:22', 123, 'Msg', 123, 'N/A'],
                  ['2014-09-19 12:22:21', 1234, 'Cmd', 123, 'N/A']],
         '5678': [['2014-09-19 09:55:41', 1234, 'Foo', 'N/A', 'N/A'],
                  ['2014-09-19 10:22:22', 123, 'Bar', 123, 'N/A'],
                  ['2014-09-19 12:22:21', 1234, 'Bar', 123, 'N/A']]}

from collections import Counter

>>> {key : Counter([i[2] for i in dict1[key]]) for key in dict1.keys()}
{'1234': Counter({'Msg': 2, 'Cmd': 1}),
 '5678': Counter({'Bar': 2, 'Foo': 1})}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM