Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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)?

like image 425
jondinham Avatar asked Feb 29 '12 08:02

jondinham


People also ask

How do you create an associative array in Python?

Use dict() to create an associative array Call dict() to generate a dictionary object. Use the syntax dict[key] = value to add key - value pairs to the dictionary.

Is an associative array a dictionary?

Associative arrays, also called maps or dictionaries, are an abstract data type that can hold data in (key, value) pairs.

What is the difference between a dictionary and an associative array?

Mathematically speaking, a dictionary over universe X represents an element of the power set 2X of X. An associative array is a data structure that implements a (dynamic) mapping with insertion/update, deletion and retrieval.

Does Python have associative array?

One of the nice features of scripting languages such as Python is what is called an associative array. An associative array differs from a “normal” array in one major respect: rather than being indexed numerically (i.e. 0, 1, 2, 3, …), it is indexed by a key, or an English-like word.


3 Answers

This may meet your need better:

Dictionary = {"Forename":"Paul","Surname":"Dinh"}
KeyList = ["Forename", "Surname"]
for Key in KeyList:
    print Key,"=",Dictionary[Key]
like image 63
Felix Yan Avatar answered Oct 13 '22 21:10

Felix Yan


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]
like image 21
Johan Lundberg Avatar answered Oct 17 '22 08:10

Johan Lundberg


First of all dictionaries are not sorted at all nor by key, nor by value.

And basing on your description. You actualy need collections.OrderedDict module

from collections import OrderedDict

my_dict = OrderedDict([("Forename", "Paul"), ("Surname", "Dinh")])

for key, value in my_dict.iteritems():
    print '%s = %s' % (key, value)

Note that you need to instantiate OrderedDict from list of tuples not from another dict as dict instance will shuffle the order of items before OrderedDict will be instantiated.

like image 16
lig Avatar answered Oct 17 '22 08:10

lig