[英]Why aren't my dictionary values being stored as integers?
我正在編寫一個函數,它返回字符串中每個字母的出現次數:
def count_all(text):
text = text.lower()
counts = {}
for char in text:
if char not in counts:
counts.setdefault(char,[1])
else:
counts[char] = counts[char] + 1
print(counts)
count_all('banana')
但是當我嘗試運行它時,我收到以下錯誤消息:
Traceback (most recent call last):
File "countall.py", line 11, in <module>
count_all('banana')
File "countall.py", line 8, in count_all
counts[char] = counts[char] + 1
TypeError: can only concatenate list (not "int") to list
我懷疑它正在讀取key char
的值作為帶有單個項目的列表而不是整數,但我不完全確定。 我為每個字母創建密鑰並將它們的值賦值為1沒有任何問題,因為這是在我注釋掉else
子句時打印出來的:
Mac:python mac$ python3 countall.py
{'a': [1], 'b': [1], 'n': [1]}
任何幫助表示贊賞。 提前致謝!
我懷疑它正在讀取key char的值作為具有單個項而不是整數的列表
確切地說,因為你將它設置為一個列表: counts.setdefault(char,[1])
。 只是不要這樣做,它會工作: counts.setdefault(char,1)
。 setdefault
實際上是不必要的,因為你已經檢查過char not in counts
,所以你可以只counts[char] = 1
。
另請注意,Python已經內置了此算法:
>>> from collections import Counter
>>> Counter('banana')
Counter({'a': 3, 'n': 2, 'b': 1})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.