使用comprehension的字典Python中的频率计数

2024-04-25 06:37:52 发布

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

我有一本字典,想用Python理解来计算频率。在

示例:

输入

{0: 'Succeeded', 1: 'Succeeded', 2: 'Failed', 3: 'Failed', 4: 'Succeeded'}

输出

^{pr2}$

Tags: 示例字典频率succeededfailedpr2
1条回答
网友
1楼 · 发布于 2024-04-25 06:37:52

不要使用理解,只需将^{}应用到字典的values上。在

>>> from collections import Counter
>>> d = {0: 'Succeeded', 1: 'Succeeded', 2: 'Failed', 3: 'Failed', 4: 'Succeeded'}
>>> Counter(d.values())
>>> Counter({'Failed': 2, 'Succeeded': 3})

一般提示

具有连续整数键的字典是对内存的浪费。你可以用一张单子

^{pr2}$

您可以像使用原始字典一样使用整数0, 1, 2, ...索引到其中。该列表占用较少的内存,并且可以在不使用哈希键的情况下找到值。在

在本例中,Counter(my_list)将构造您想要的字典。在


警告下面的错误代码

你可以写一篇如下的理解

>>> vals = list(d.values())
>>> {v:vals.count(v) for v in vals}
>>> {'Failed': 2, 'Succeeded': 3}

但我强烈建议不要使用这种理解,因为与O(n)Counter解相反,它具有二次时间复杂性。对于vals中的每个值,vals将迭代以计算该值。在

相关问题 更多 >