You will find me harping constantly about using variable names that are truthful and describe what they represent. The key variable in this loop will be a student dictionary, in the singular. Granted the dictionary contains several items, but even they are not represented by any form of grouping, hence not a group. This variable name is erroneous and misleading.
for student in students:
This makes much more sense to the reader. For singular in plural. How hard could that be to understand right off?
You will find that this goes a long way in helping to debug your code. You are, after all, the principal reader. Make it easy for yourself, keeping the rest of the reader community in mind.
The singular - plural connection is fairly easy to make in English though there are some failing points.
for deer in deer:
for bison in bison:
for moose in moose:
for sheep in sheep:
Not as handy as,
for mouse in mice:
for goose in geese,
for die in dice:
In some situations it will be tricky to come up with the variable name combo, but not often, and there is always another way. We just need to keep it sensible and comprehensive.