[Tutor] Read dictionary data in a specific order...
Trey Keown
trey at opmstech.org
Sat Aug 25 03:56:32 CEST 2007
> "Trey Keown" <trey at opmstech.org> wrote
>
>> I would like to know, how can I read (or sort) a dictionary in a
>> certain
>> order?
>
> Dictionaries are by design unsorted and indeed may even change
> their order during their lifetime.
>
>> attrs={u'title': u'example window title', u'name': u'SELF', u'icon':
>> u'e.ico'}
>> how could I get the data so that u'name' is read first, u'title'
>> second,
>> and u'icon' third?
>
> Normally you would sort the keys of the dictionary but since
> your order is not a natural sort order then the easiest way is
> probably to create a list of the keys you want in the order you
> want them. Thus:
>
> keys = ['name','title','icon']
> for key in keys: print attrs[key]
>
----------------------------------------------------------------------
Okay, the reason I need to know this is that expat, my xml parsing module,
returns the attributes of an xml element as a dictionary. Now that i've
done what you recommended above, my xml parsing program returns the
dictionary's value as the value <i>and</i> the tag.
here's my code-
"""""""""""""""""""""""""""""""""""""
...
global window_attrs_key_order
window_attrs_key_order = ["name", "title", "icon"]
def start_element(name, attrs):
global window_attrs_key_order
if name in acceptedelements:
......
if name == "window":
print attrs.iteritems()
for (tag,val) in attrs.iteritems():
if tag in window_attrs_key_order:
for tag in window_attrs_key_order:
if tag == u"name":
print "%s%s = Tk()" %(whitespace, val)
print "***^^^%s^^^***" %val
whatwindow = val
if tag == u"title":
print "%s%s.title(\"%s\")" % (whitespace, whatwindow, val)
if tag == u"icon":
if val == "NONE":
print "#---->NO ICON"
else:
print "%s%s.iconbitmap(\"%s\")" %(whitespace, whatwindow, val)
else:
print "#-----Error, unrecognized attribute in window element...-----"
......
"""""""""""""""""""""""""""""""""""""
here's a likely example of what expat would spit out the attributes as-
"""""""""""""""""""""""""""""""""""""
attrs={u'title': u'example window title', u'name': u'SELF', u'icon':
u'e.ico'}
"""""""""""""""""""""""""""""""""""""
and the program output is this-
"""""""""""""""""""""""""""""""""""""
......
<dictionary-itemiterator object at 0x0112F900>
Example Window Title = Tk()
***^^^Example Window Title^^^***
Example Window Title.title("Example Window Title")
Example Window Title.iconbitmap("Example Window Title")
SELF = Tk()
***^^^SELF^^^***
SELF.title("SELF")
SELF.iconbitmap("SELF")
e.ico = Tk()
***^^^e.ico^^^***
e.ico.title("e.ico")
e.ico.iconbitmap("e.ico")
"""""""""""""""""""""""""""""""""""""
why would you think that the program would do this?
Trey
More information about the Tutor
mailing list