2016-09-25 60 views
-4
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'方法来更简洁地编写函数。它说我应该能够删除'如果'的声明。我尝试了不同的东西,但我只需要在理解之前看到一个示例...请提供示例代码非常感谢您!使用get()更简洁地编写字典功能

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

+0

做你自己的功课。 – TigerhawkT3

+0

做一些谷歌搜索,你会发现很多的例子 –

+0

“python dict get”在google中返回了很多文档,教程和例子。 –

回答

0

在Python中,dict.get(k,v)将在字典中搜索关键字k并将其返回。但是,如果字典中不存在k,而不是像d[k]那样提出KeyError并且可能会使程序崩溃,它将返回提供的默认值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]被设置为0 + 1,当然这是1.下一次该特定键是get -ed,get将返回存储的值1,然后添加1并重新分配, 等等。

+0

非常感谢你的解释,这对你有很大的帮助! – Spencer456

+0

@Spencer乐于助人。不要忘记,接受答案等 – BHustus