Dictionary assignment
John J. Lee
jjl at pobox.com
Fri Aug 15 18:25:23 EDT 2003
"Mark Daley" <mark at diversiform.com> writes:
> I've been using this to save one dictionary as an entry in another
> dictionary. I was working, but now it seems I've done something to break
> it. Here's the code in question:
>
> def formatsave(self, args = None):
> if self.formats.get() == '':
> tkMessageBox.showwarning("No Format", "You must specify a format
> name.")
> else:
> for key in current.keys():
> format[self.formats.get()][key] = current[key]
> temp = format.keys()
> temp.sort()
> list = tuple(temp)
Yuck. You've assigned something to a builtin (list). Strangely, the
object you chose to bind to list is a tuple!
> gui.formats._list.setlist(list)
>
>
> Here's the error I'm getting:
>
> Traceback (most recent call last):
> File "C:\PYTHON23\lib\lib-tk\Tkinter.py", line 1345, in __call__
> return self.func(*args)
> File "C:\Python23\Layout.py", line 191, in formatsave
> format[self.formats.get()][key] = current[key]
> KeyError: 'Format 1'
>
>
> Any ideas?
Nobody here is likely to solve it for you. Get aquainted with the
print statement! There are three indexes there -- which one is the
exception coming from? Split them up, one index per line, and print
out the results. You'll soon see the problem.
print format[self.formats.get()]
print format[self.formats.get()][key]
print current[key]
If you're like me, you'll want to make sure all debug print statements
have a label, though, or you'll inevitably end up wondering (not now,
but later) where the hell the output you're seeing on the screen is
coming from.
print "format[self.formats.get()]", format[self.formats.get()]
print "format[self.formats.get()][key]", format[self.formats.get()][key]
print "current[key]", current[key]
John
More information about the Python-list
mailing list