我刚刚学习了如何创建列表理解,并且回头查看了过去的项目,以了解可以在何处创建列表理解。我成功完成了几次尝试,但是后来进入了代码的这一部分,我想知道是否有任何方法可以从中创建列表理解:
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]方面无效。
任何帮助将不胜感激!
答案 0 :(得分:3)
如果util.Counter()
是collections.Counter
之类的词典,则可以通过其update
方法用词典对其进行更新。因此,您可以使用:
scores = util.Counter()
scores.update({L: self.weights[L] * trainingData[i] for L in self.legalLabels})
然后对于某些标签x
,您可以通过scores[x]
访问结果。
列表理解用于列表,字典理解用于字典。后者是mentioned in the docs。
答案 1 :(得分:2)
编辑:我没有注意scores = utils.Counter()
,所以我提供了一个答案,即list
理解。有关正确方法,请参见@jpp的答案。
您的方法是正确的,但理解力中没有任务。您必须在其中做一个
scores = [self.weights[l] * trainingData[I]) for l in self.legalLabels]