簡體   English   中英

為什么我的字典值不是以整數形式存儲的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM