Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

associative array

3 views
Skip to first unread message

Javier Montoya

unread,
Mar 31, 2010, 12:40:30 PM3/31/10
to
Dear all,

I'm a newbie in python and would be acknowledge if somebody could shed
some light on associative arrays.
More precisely, I would like to create a multi-dimensional associative
array. I have for example a list of students which are identified
uniquely by their student IDs. Additionally, for each student I have
some information: FirstName, LastName, etc.

The array would have then the following form:
[StudentID] => [FirstName][LastName][Telephone]...[ ... ]

I would like to be able to access a field directly by using a
StudentID
[StudentID][FirstName]
[StudentID][LastName]

How could I manipulate such an array (create the array, add elements,
access data)?

Best wishes


Kushal Kumaran

unread,
Mar 31, 2010, 12:52:14 PM3/31/10
to Javier Montoya, pytho...@python.org

Did you try the python tutorial? Dictionaries might be what you are
looking for.

http://docs.python.org/tutorial/datastructures.html#dictionaries

--
regards,
kushal

Gary Herron

unread,
Mar 31, 2010, 1:36:22 PM3/31/10
to pytho...@python.org
Create a class for student with attributes for ID, FirstName, LastName, etc.

class Student:
def __init__(self, id, FirstName, ...):
self.id = id
self.FirstName = FirstName
...

then whenever you create a student object, use a dictionary to associate
the object with its is
AA = {} # An empty dictionary
s = Student(...)
AA[s.id] = s
... and repeat for many students...

Then to access a student's object given an id:
s = AA[id]
print s.id, s.FirstName, s.LastName, ...


I'd *not* call this a multi-dimension association, but rather just an
association between student objects and their ids.

Hope that helps,

Gary Herron

--
Gary Herron, PhD.
Department of Computer Science
DigiPen Institute of Technology
(425) 895-4418


Javier Montoya

unread,
Apr 1, 2010, 6:58:51 AM4/1/10
to
On Mar 31, 7:36 pm, Gary Herron <gher...@digipen.edu> wrote:
> JavierMontoyawrote:

Dear all,

Thanks for your suggestions, it worked! As Gary suggested, I created a
'student' class and mapped its objects to a dictionary.
Is it possible to sort the dictionary by the student's grades in
descending order?

Best wishes

Chris Rebert

unread,
Apr 1, 2010, 7:10:42 AM4/1/10
to Javier Montoya, pytho...@python.org

Dictionaries are not ordered collections, so they themselves cannot be sorted.

However, if you want a list of students sorted in the manner you stated:
class_rank = list(garys_dictionary.values())
class_rank.sort(key=lambda student: student.grade, reverse=True)

Cheers,
Chris
--
http://blog.rebertia.com

Peter Otten

unread,
Apr 1, 2010, 7:20:57 AM4/1/10
to
Javier Montoya wrote:

> Is it possible to sort the dictionary by the student's grades in
> descending order?

You cannot sort dictionaries, but you can put dictionary items into a list
and then sort that.

Assumming that you have a dictionary student_dict that maps student IDs to
Student instances and a function get_grade() to find a student's grade you'd
do

def get_grade(student):
return course[student.student_id].grade # or whatever it takes

students_by_grade = sorted(student_dict.itervalues(), key=get_grade,
reverse=True)

for student in students_by_grade:
print student.first_name, student.last_name

However, problems like the above are normally handled best using a SQL
database, so I recommend that you have a look at

http://docs.python.org/library/sqlite3.html

Peter

Harishankar

unread,
Apr 1, 2010, 7:57:11 AM4/1/10
to

I know this is not a direct answer, but in your case I would probably use
a database, because it is the easiest and most standardized way to access
such types of data. If you don't want something heavyweight, use sqlite
with in-memory databases/persistent file.

Look at sqlite3 module in python.

--
Harishankar (http://harishankar.org http://literaryforums.org)

Bernard Czenkusz

unread,
Apr 2, 2010, 8:01:55 AM4/2/10
to

You could also look at the September issue of the Python Rag which has a
couple of articles on storing a membership class using Shelve, which is
similar to what you are interested in:
http://www.pythonrag.org/

0 new messages