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