如何理解python中的以下空if语句?
我从一本书中阅读了下面的Python代码,应该很容易理解。我只是想知道,下面的空if语句的目的是什么:如何理解python中的以下空if语句?,python,Python,我从一本书中阅读了下面的Python代码,应该很容易理解。我只是想知道,下面的空if语句的目的是什么: if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0 labelCounts[currentLabel] += 1 完整代码为: from math import log def calcShannonEnt(dataSet): numEntries = len(dataSet) la
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
完整代码为:
from math import log
def calcShannonEnt(dataSet):
numEntries = len(dataSet)
labelCounts = {}
for featVec in dataSet:
currentLabel = featVec[-1]
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
shannonEnt = 0.0
for key in labelCounts:
prob = float(labelCounts[key])/numEntries
shannonEnt -= prob * log(prob,2)
return shannonEnt
这是一个错误。它可能有严重的凹痕,应该是:
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
在Python中,如果,则不能有“empty”。不过,你可以这样做:
if something:
pass
实际上什么也不做。看起来您需要缩进,您的代码应该生成密钥如果它不存在,那么它会在该密钥上增加一个计数器,+=不应该缩进以说明已经存在的密钥和新创建的密钥:
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
另一种说法是:
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 1
else:
labelCounts[currentLabel] += 1
第二行很可能是缩进的,如下所示:
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1
如果dictlabelCounts
不包含值为currentLabel
的键(如果该键在书中的显示方式正好如此),则可以这样做以避免抛出错误,这是一个语法错误,你应该读另一本书。python中没有空的,如果,这是一个语法错误。你确定缩进是正确的吗?似乎应该缩进labelCounts[currentLabel]=0
。如果书中的内容与此完全相同,我敢打赌这是一个打字错误。如果你给这本书命名,我们可以查找出版商的勘误表,从而得到更好的答案。而且,作为额外的奖励,我们可以避免向其他任何人推荐它。:)@查理·达菲——我想更进一步:如果没有这本书的名字,这个问题及其答案绝对没有任何价值。实际上,它基本上是“这里应该有一个明显的错误吗?”,“不,应该纠正。”
if currentLabel not in labelCounts.keys():
labelCounts[currentLabel] = 0
labelCounts[currentLabel] += 1