Python 类型错误:Can';t转换为';int';对象隐式转换为str,即使在尝试转换和格式化之后也是如此

Python 类型错误:Can';t转换为';int';对象隐式转换为str,即使在尝试转换和格式化之后也是如此,python,Python,我试图在shell中创建一个简单的直方图,以提供一个包含键的字典,这些键的值作为随机选择键的概率。我使用的格式由于某种原因不起作用。我也像往常一样使用str()函数进行了显式转换,但仍然得到了相同的错误。我使用了一个for循环,由于某种原因,它在密钥的概率为1时起作用,但之后它给出了一个错误 这是调试窗口: def histogram(word): 'takes a word and returns an histogram of it' d = dict() for l

我试图在shell中创建一个简单的直方图,以提供一个包含键的字典,这些键的值作为随机选择键的概率。我使用的格式由于某种原因不起作用。我也像往常一样使用str()函数进行了显式转换,但仍然得到了相同的错误。我使用了一个for循环,由于某种原因,它在密钥的概率为1时起作用,但之后它给出了一个错误

这是调试窗口:

def histogram(word):
    'takes a word and returns an histogram of it'
    d = dict()
    for letter in word:`enter code here`
        d[letter] = d.get(letter,0) + 1 
    return (d)

>>> h = histogram('mississipi')
>>> print (h)
{'i': 4, 'p': 1, 's': 4, 'm': 1}
这部分工作正常,但随后问题浮出水面

def histogram(word):
    'takes a word and returns an histogram of it'
    d = dict()
    for letter in word:
        d[letter] = '{}/{}'.format((d.get(letter,0) + 1),len(word))
    return d

>>> print (histogram('mississippi'))
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print (histogram('mississippi'))
  File "<pyshell#3>", line 5, in histogram
    d[letter] = '{}/{}'.format((d.get(letter,0) + 1),len(word))
TypeError: Can't convert 'int' object to str implicitly
def直方图(word):
'获取一个单词并返回其直方图'
d=dict()
对于大写字母:
d[letter]='{}/{}'。格式((d.get(letter,0)+1),len(word))
返回d
>>>打印(直方图(‘密西西比’)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印(直方图(‘密西西比’)
直方图中第5行的文件“”
d[letter]='{}/{}'。格式((d.get(letter,0)+1),len(word))
TypeError:无法将“int”对象隐式转换为str
def直方图(word):
'获取一个单词并返回其直方图'
d=dict()
对于大写字母:
d[letter]=str(d.get(letter,0)+1)+'/'+str(len(word))
返回d
>>>打印(直方图(‘密西西比’)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印(直方图(‘密西西比’)
直方图中第5行的文件“”
d[letter]=str(d.get(letter,0)+1)+'/'+str(len(word))
TypeError:无法将“int”对象隐式转换为str
在这之后,它似乎起了作用,但仍然显示出错误

def histogram(word):
    'takes a word and returns an histogram of it'
    d = dict()
    for letter in word:
        d[letter] = str(d.get(letter,0) + 1) + '/' + str(len(word))
        print (d)

>>> print (histogram('mississippi'))
{'m': '1/11'}
{'m': '1/11', 'i': '1/11'}
{'s': '1/11', 'm': '1/11', 'i': '1/11'}
Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    print (histogram('mississippi'))
  File "<pyshell#22>", line 5, in histogram
    d[letter] = str(d.get(letter,0) + 1) + '/' + str(len(word))
TypeError: Can't convert 'int' object to str implicitly 
def直方图(word):
'获取一个单词并返回其直方图'
d=dict()
对于大写字母:
d[letter]=str(d.get(letter,0)+1)+'/'+str(len(word))
印刷品(d)
>>>打印(直方图(‘密西西比’)
{m':'1/11'}
{'m':'1/11','i':'1/11'}
{'s':'1/11','m':'1/11','i':'1/11'}
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打印(直方图(‘密西西比’)
直方图中第5行的文件“”
d[letter]=str(d.get(letter,0)+1)+'/'+str(len(word))
TypeError:无法将“int”对象隐式转换为str
您正在将字符串存储到词典中,然后尝试在字符串的值中添加1

将计数和字符串格式分开首先创建计数,然后使用字符串生成最终字典:

def histogram(word):
    d = {}
    # create counts
    for letter in word:
        d[letter] = d.get(letter, 0) + 1
    # produce a dictionary with count/len strings
    return {l: '{}/{}'.format(c, len(word)) for l, c in d.items()}
您可能需要查看以替换字母计数循环:

from collections import Counter

def histogram(word):
    d = Counter(word)
    return {l: '{}/{}'.format(c, len(word)) for l, c in d.items()}

“1/11”是一个字符串,所有被引号括起来的东西都是一个字符串。你想要的不是
'{}/{}。格式(a,b)
,而只是
a/b
d.get(字母,0)
返回一个字符串,你不能在其中加1。我不明白为什么你想要字符串而不是实际数字作为直方图的值…@jadsq:那么为什么不问这个问题呢?
from collections import Counter

def histogram(word):
    d = Counter(word)
    return {l: '{}/{}'.format(c, len(word)) for l, c in d.items()}