所以我在寫作業問題時遇到了問題。字符串到字典字數
Write a function word_counter(input_str) which takes a string input_str and returns a dictionary mapping words in input_str to their occurrence counts.
所以我到目前爲止的代碼是:
def word_counter(input_str):
'''function that counts occurrences of words in a string'''
sentence = input_str.lower().split()
counts = {}
for w in sentence:
counts[w] = counts.get(w, 0) + 1
items = counts.items()
sorted_items = sorted(items)
return sorted_items
現在,當我運行一個測試案例的代碼,如在Python外殼word_counter("This is a sentence")
我得到的結果是:
[('a', 1), ('is', 1), ('sentence', 1), ('this', 2)]
這是需要的。然而,用來檢查答案的測試代碼:
word_count_dict = word_counter("This is a sentence")
items = word_count_dict.items()
sorted_items = sorted(items)
print(sorted_items)
當我與該代碼運行它,我得到的錯誤:
Traceback (most recent call last):
File "<string>", line 2, in <fragment>
builtins.AttributeError: 'list' object has no attribute 'items'
不知道如何改變我的代碼,以便它與給定的測試代碼一起工作。
'sorted'返回列表對象而不是字典對象。所以'word_counter'也返回一個列表對象,並且你正試圖調用'items',就像它在字典上調用它一樣。那就是問題所在。只要執行'print(word_counter(「這是一個句子」))'這已經足夠了 – thefourtheye
你的函數沒有返回一個字典,而是一個元組列表,這是dict.items在Python 2中給你的。 – jwilner
@thefourtheye I明白我在排序和項目位現在做了什麼問題,但是,你是什麼意思「只要打印(word_counter(」這是一個句子「))」是我唯一需要在函數中?對不起 – Mikey