Responding to updated issue: To some extent this is a Python issue, even for lists. v = int(22); L= [v]; L; v= int(23); L gives 22 both times. v.set() works because you didn't actually change the reference the variable v has, if I understand correctly.
sage: for x in w.iteritems(): v.set(*x)