2024-04-25 06:37:52 发布
网友
我有一本字典,想用Python理解来计算频率。在
示例:
输入
{0: 'Succeeded', 1: 'Succeeded', 2: 'Failed', 3: 'Failed', 4: 'Succeeded'}
输出
不要使用理解,只需将^{}应用到字典的values上。在
values
>>> from collections import Counter >>> d = {0: 'Succeeded', 1: 'Succeeded', 2: 'Failed', 3: 'Failed', 4: 'Succeeded'} >>> Counter(d.values()) >>> Counter({'Failed': 2, 'Succeeded': 3})
一般提示
具有连续整数键的字典是对内存的浪费。你可以用一张单子
您可以像使用原始字典一样使用整数0, 1, 2, ...索引到其中。该列表占用较少的内存,并且可以在不使用哈希键的情况下找到值。在
0, 1, 2, ...
在本例中,Counter(my_list)将构造您想要的字典。在
Counter(my_list)
警告下面的错误代码
你可以写一篇如下的理解
>>> vals = list(d.values()) >>> {v:vals.count(v) for v in vals} >>> {'Failed': 2, 'Succeeded': 3}
但我强烈建议不要使用这种理解,因为与O(n)Counter解相反,它具有二次时间复杂性。对于vals中的每个值,vals将迭代以计算该值。在
Counter
vals
不要使用理解,只需将^{} 应用到字典的
values
上。在一般提示
具有连续整数键的字典是对内存的浪费。你可以用一张单子
^{pr2}$您可以像使用原始字典一样使用整数
0, 1, 2, ...
索引到其中。该列表占用较少的内存,并且可以在不使用哈希键的情况下找到值。在在本例中,
Counter(my_list)
将构造您想要的字典。在警告下面的错误代码
你可以写一篇如下的理解
但我强烈建议不要使用这种理解,因为与O(n)
Counter
解相反,它具有二次时间复杂性。对于vals
中的每个值,vals
将迭代以计算该值。在相关问题 更多 >
编程相关推荐