Есть ли способ создать понимание списка из этого? - PullRequest
0 голосов
/ 22 ноября 2018

Я только что узнал, как создавать списочные представления, и я оглядывался назад на свои прошлые проекты, чтобы посмотреть, где я могу создать понимания.Я был успешным с несколькими, но потом я добрался до этой части кода, и мне было интересно, есть ли какой-нибудь способ создать понимание списка из этого:

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]

, но это не работает с точки зрения атрибуциикаждое значение в баллах [л].

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Если util.Counter() словарь, подобный collections.Counter, вы можете обновить его словарем с помощью метода update.Таким образом, вы можете использовать:

scores = util.Counter()
scores.update({L: self.weights[L] * trainingData[i] for L in self.legalLabels})

Затем для некоторой метки x вы можете получить доступ к результату через scores[x].

Понимание списков предназначено для списков, словарное восприятие словари.Последние упомянуты в документах .

0 голосов
/ 22 ноября 2018

РЕДАКТИРОВАТЬ: я не обратил внимание на scores = utils.Counter(), поэтому я дал ответ, который list понимание.См. Ответ @ jpp для правильного подхода.

Ваш подход верен, но внутри понимания нет назначения.Вы должны сделать один за его пределами

scores = [self.weights[l] * trainingData[I]) for l in self.legalLabels]
...