使用get()更简洁地编写字典函数

时间:2016-09-25 17:15:33

标签: python

def histogram(s):
    d = dict()
    for c in s:
        if c not in d:
            d[c] = 1
        else:
            d[c] += 1

    return d

print(histogram('brontosaurus')) 

因此我被要求使用'get'方法更简洁地编写函数。它说我应该能够删除'if'语句。我尝试了不同的东西,但我只需要在我理解之前看一个例子...请提供示例代码非常感谢!

更新:我已经研究过了,我明白'得到的是什么'但我在这种情况下使用它时遇到了麻烦。我不知道如何修改这个功能......这就是我被困住的地方。

1 个答案:

答案 0 :(得分:0)

在Python中,dict.get(k,v)将在字典中搜索密钥k并将其返回。但是,如果字典中不存在k,而不是像KeyError那样提出d[k]并且可能导致程序崩溃,它将返回提供的默认值{{1} }。在未指定默认值v的情况下调用get(k)将返回v

有了这个说法,删除None声明是一件小事:

if

如果def histogram(s): d = dict() for c in s: d[c] = d.get(c,0) + 1 return d 不存在,d[c]将返回d.get(c,0),即提供的默认值。如果0确实存在,d[c]将返回存储的值。因此,如果某个密钥尚未出现在字典中,d.get(c,0)设置为d[c],当然是1.下一次特定密钥为0 + 1 - ed,{{ 1}}将返回存储的值get,然后添加1并重新分配,依此类推。