Search code examples
pythonsortingdictionaryassociative-array

How to implement associative array (not dictionary) in Python?


I trying to print out a dictionary in Python:

Dictionary = {"Forename":"Paul","Surname":"Dinh"}
for Key,Value in Dictionary.iteritems():
  print Key,"=",Value

Although the item "Forename" is listed first, but dictionaries in Python seem to be sorted by values, so the result is like this:

Surname = Dinh
Forename = Paul

How to print out these with the same order in code or the order when items are appended in (not sorted by values nor by keys)?


Solution

  • You can use a list of tuples (or list of lists). Like this:

    Arr= [("Forename","Paul"),("Surname","Dinh")]
    for Key,Value in Arr: 
        print Key,"=",Value
    
    Forename = Paul
    Surname = Dinh
    

    you can make a dictionary out of this with:

    Dictionary=dict(Arr)
    

    And the correctly sorted keys like this:

    keys = [k for k,v in Arr]
    

    Then do this:

    for k in keys: print k,Dictionary[k]
    

    but I agree with the comments on your question: Would it not be easy to sort the keys in the required order when looping instead?

    EDIT: (thank you Rik Poggi), OrderedDict does this for you:

    od=collections.OrderedDict(Arr)
    for k in od: print k,od[k]