有没有办法从中创建列表理解?

时间:2018-11-22 01:07:18

标签: python dictionary list-comprehension

我刚刚学习了如何创建列表理解,并且回头查看了过去的项目,以了解可以在何处创建列表理解。我成功完成了几次尝试,但是后来进入了代码的这一部分,我想知道是否有任何方法可以从中创建列表理解:

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 个答案:

答案 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]