我剛剛學會了如何創建列表推導式,我正在回顧我過去的項目,看看我可以在哪里創建推導式。我在幾個方面取得了成功,但后來我到了代碼的這一部分,我想知道是否有任何方法可以從中創建列表理解: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
提交
取消