Answer is in the comments as well. Thanks to:
https://stackoverflow.com/users/1766544/kenny-ostrom
https://stackoverflow.com/users/218663/jonsg
... for the help.
This was an instance of my misunderstanding how Python generators work. Switching to:
G[row['City1']][row['City2']]['shortPaths'] = list(shortPaths)
Works just fine.
I thought it was interesting how this example of my misunderstanding and learning about generators seemed to mimic a scope violation. Maybe a tip-off for others who find themselves struggling in a similar manner.