Python: невозможно изменить поле словаря во время итерации по нему - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть этот список:

>>> stud
[19, 11, 6, 26]

Если я зациклюсь на поле 'draws', я получу следующее:

>>> [aluDict[str(s)]['draws'] for s in stud]
[1, 0, 1, 0]

Теперь я хочу добавить 1 к каждому из них, чтобы получить (потенциально) следующее:

>>> [aluDict[str(s)]['draws'] for s in stud]
[2, 1, 2, 1]

Чтобы сделать это, я попробовал это:

>>> [aluDict[str(s)]['draws']+=1 for s in stud]
  File "<stdin>", line 1
    [aluDict[str(s)]['draws']+=1 for s in stud]
                              ^
SyntaxError: invalid syntax

Если я делаю это индивидуально, я могу сделать это:

>>> aluDict[str(19)]['draws']
2
>>> aluDict[str(19)]['draws']+=1
>>> aluDict[str(19)]['draws']
3

Почему это происходит? Чего мне не хватает?

Спасибо!

1 Ответ

0 голосов
/ 10 сентября 2018

Если вам нужен только список [2, 1, 2, 1] и вы не хотите изменять какие-либо значения, хранящиеся в aluDict, используйте +1:

[aluDict[str(s)]['draws']+1 for s in stud]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...