Оператор моржа в понимании диктовокPython

Программы на Python
Ответить
Anonymous
 Оператор моржа в понимании диктовок

Сообщение Anonymous »

Я хотел избежать двойного вычисления среднего значения при понимании словаря и попробовал использовать оператор моржа:

Код: Выделить всё

>>> dic = {"A": [45,58,75], "B": [55,82,80,92], "C": [78,95,90], "D":[98,75]}
>>> q = {x: (mean := (sum(dic[x]) // len(dic[x]))) for x in dic if mean > 65}
но это дало мне следующую ошибку:

Код: Выделить всё

Traceback (most recent call last):
File "
", line 1, in 
q = {x: (mean := (sum(dic[x]) // len(dic[x]))) for x in dic if mean > 65}
File "", line 1, in 
q = {x: (mean := (sum(dic[x]) // len(dic[x]))) for x in dic if mean > 65}
NameError: name 'mean' is not defined
Эта ошибка возникает только тогда, когда я пытаюсь использовать переменную, при ее определении проблем нет:

Код: Выделить всё

>>> q = {x: (mean := (sum(dic[x]) // len(dic[x]))) for x in dic if (sum(dic[x]) // len(dic[x])) > 65}
>>> mean
86
>>> q
{'B': 77, 'C': 87, 'D': 86}
Почему? Где я ошибся?

Подробнее здесь: https://stackoverflow.com/questions/694 ... prehension
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»