我刚刚学会了如何创建列表推导式,我正在回顾我过去的项目,看看我可以在哪里创建推导式。我在几个方面取得了成功,但后来我到了代码的这一部分,我想知道是否有任何方法可以从中创建列表理解:scores = util.Counter()for l in self.legalLabels: scores[l] = self.weights[l] * trainingData[i]也许我只是想得太难了,但我想知道是否有任何方法可以使用它来创建理解?我在想这样的事情:[(scores(l) = self.weights[l] * trainingData[I]) for l in self.legalLabels]但这在将每个值归因于分数 [l] 方面不起作用。任何帮助将不胜感激!
2 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
如果util.Counter()是像 一样的字典collections.Counter,你可以通过它的update方法用字典更新它。所以你可以使用:
scores = util.Counter()
scores.update({L: self.weights[L] * trainingData[i] for L in self.legalLabels})
然后对于某些标签x,您可以通过scores[x].
列表理解用于列表,字典理解用于字典。后者在文档中提到。
明月笑刀无情
TA贡献1828条经验 获得超4个赞
我没有注意scores = utils.Counter()
,所以我提供了一个list
理解的答案。有关正确方法,请参阅@jpp 的答案。
你的方法是对的,但在理解范围内没有分配。你必须在它外面做一个
scores = [self.weights[l] * trainingData[I]) for l in self.legalLabels]
添加回答
举报
0/150
提交
取消