On Sat, Aug 30, 2014 at 7:49 PM, Juan Christian <juan0christ...@gmail.com> wrote: > Let's see, the print is just "debug", it's not necessary in the program. > > 'row[0]' is the first element of the current row. Ex.: row = ['a', 'b', 'c', > 'd'] - row[0] would be 'a' > > 'rates' is a dictionary, 'rates[row[0]]' would update the key row[0] in the > dict with the 'value' > > I think that's it, right?
Close enough. Let's look again now. print(rates[row[0]] + " / VALUE : " + str(value)) rates[row[0]] = value The print statement here is trying to print the value for a record that hasn't been entered in yet. So one way to naively fix this is to just switch the statements around: rates[row[0]] = value print(rates[row[0]] + " / VALUE : " + str(value)) But that probably doesn't mean what you want. Otherwise, you'd be printing the value _twice_ in your debugging output. Try it out and you'll see what I mean. You probably meant to write: print(row[0] + " / VALUE : " + str(value)) rates[row[0]] = value This is why human understanding is necessary here: it's all too easy to make a program run, but not make much sense. Here, there are at least two ways to "fix" the erroneous situation, but only you can tell us the right thing to do is. That's why I asked very emphatically: what do you mean? :P (And frankly, you probably don't want the print statement there in the first place: it's debugging output. Right?) _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor