associative array

J

Javier Montoya

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
 
K

Kushal Kumaran

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

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

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

Gary Herron

Javier said:
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
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
 
J

Javier Montoya

JavierMontoyawrote:
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

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

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
 
C

Chris Rebert

JavierMontoyawrote:
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

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

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?

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
 
P

Peter Otten

Javier said:
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
 
H

Harishankar

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

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top