Skip to main content
 首页 » 编程设计

python之构建直方图

2025年05月04日13del

我正在尝试通过 python 制作直方图。我从以下片段开始:

def histogram(L): 
    d = {} 
    for x in L: 
        if x in d: 
            d[x] += 1 
        else: 
            d[x] = 1 
    return d 

我理解是用字典函数来解决问题。 但我只是对第 4 行感到困惑:if x in d:

d要构造了,d里面什么都没有,x在d里怎么会呢?

请您参考如下方法:

请记住,if 位于 for 循环中。

因此,当您查看 L 中的第一项时,d 中没有任何内容,但是当您看到 L 中的下一项时,d中有的东西,所以需要检查是否在直方图上做一个新的bin(d[x] = 1),或将项目添加到现有容器中 (d[x] += 1)。

在 Python 中,我们实际上有一些快捷方式:

from collections import defaultdict 
 
def histogram(L): 
    d = defaultdict(int) 
    for x in L: 
        d[x] += 1 
return d 

这会自动将 d 中的每个 bin 设为零(int() 返回的内容),因此您不必检查 bin 是否存在。在 Python 2.7 或更高版本上:

from collections import Counter 
 
d = Counter(L) 

将自动对 L 中每个项目的频率进行映射。不需要其他代码。