[Tutor] adding dictionary value at position [-1]
Alan Gauld
alan.gauld at btinternet.com
Sat Aug 6 17:49:44 CEST 2011
On 06/08/11 12:32, Norman Khine wrote:
> hello,
> i know that there are no indexes/positions in a python dictionary,
> what will be the most appropriate way to do this:
>
> addresses = {}
> for result in results.get_documents():
> addresses[result.name] = result.title
> addresses['create-new-address'] = 'Create new address!'
> return dumps(addresses)
>
> so that when i return the 'dumps(addresses)', i would like the
> 'create-new-address' to be always at the last position.
Translating that into English, what I think you want is:
You want to print a dictionary (or return a string representation?) such
that the last thing added to the dictionary is the last thing listed?
Or, do you want the string representation to have all of the items in
the order they were inserted?
Or do you want the string representation to always have the specific
'create_new_address' listed last regardless of where it was originally
inserted?
And do you really want just a string representation in this order or do
you really want the data stored and accessible in that order? (In which
case don't use a dictionary!)
I guess the real question is why you need the dictionary in the first
place? Dictionaries facilitate random access to your data based on key
values. Is that a necessary feature of your application? If so use a
dictionary but consider adding an index value to the data(*). You can
then sort the dictionary based on that index. If you don;t need the
random access aspect then store the data in a list of (key,value) tuples
instead.
(*)One way to add an index is:
def insert_in_dict(d,key,val):
d[key] = (len(d), val)
Obviously you need to drop the index when accessing the real values:
def get_real_val(d,key):
return d[key][1]
And you could even clean all that up by creating a class derived from dict.
You can then sort the dictionary by providing a key function to extract
the index to sorted()
HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list