What's happening here is a bit subtle, I think. format() takes some arguments to correspond to the {}s in the string. Since you told it that the argument you're passing will be called "k" it's going to look for something called "k" but it won't find it. Instead here you've passed it one argument, that is an iterable containing all the keys from donor_dict. What you want to do is pass format() the specific key, and inside {} put an index telling format which argument to put in its place. Does that make sense?