2016-09-25 34 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