Some basic data structures in python
Posted February 27, 2013 at 07:31 AM | categories: python | tags:
Updated February 27, 2013 at 02:48 PM
We often have a need to organize data into structures when solving problems.
1 the list
A list in python is data separated by commas in square brackets. Here, we might store the following data in a variable to describe the Antoine coefficients for benzene and the range they are relevant for [Tmin Tmax]. Lists are flexible, you can put anything in them, including other lists. We access the elements of the list by indexing:
c = ['benzene', 6.9056, 1211.0, 220.79, [-16, 104]] print c[0] print c[-1] a,b = c[0:2] print a,b name, A, B, C, Trange = c print Trange
benzene [-16, 104] benzene 6.9056 [-16, 104]
Lists are “mutable”, which means you can change their values.
a = [3, 4, 5, [7, 8], 'cat'] print a[0], a[-1] a[-1] = 'dog' print a
3 cat >>> [3, 4, 5, [7, 8], 'dog']
2 tuples
Tuples are immutable; you cannot change their values. This is handy in cases where it is an error to change the value. A tuple is like a list but it is enclosed in parentheses.
a = (3, 4, 5, [7, 8], 'cat') print a[0], a[-1] a[-1] = 'dog'
3 cat Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
3 struct
Python does not exactly have the same thing as a struct in Matlab. You can achieve something like it by defining an empty class and then defining attributes of the class. You can check if an object has a particular attribute using hasattr.
class Antoine: pass a = Antoine() a.name = 'benzene' a.Trange = [-16, 104] print a.name print hasattr(a, 'Trange') print hasattr(a, 'A')
benzene True False
4 dictionaries
The analog of the containers.Map in Matlab is the dictionary in python. Dictionaries are enclosed in curly brackets, and are composed of key:value pairs.
s = {'name':'benzene', 'A':6.9056, 'B':1211.0} s['C'] = 220.79 s['Trange'] = [-16, 104] print s print s['Trange']
{'A': 6.9056, 'C': 220.79, 'B': 1211.0, 'name': 'benzene', 'Trange': [-16, 104]} [-16, 104]
s = {'name':'benzene', 'A':6.9056, 'B':1211.0} print 'C' in s # default value for keys not in the dictionary print s.get('C', None) print s.keys() print s.values()
False None ['A', 'B', 'name'] [6.9056, 1211.0, 'benzene']
5 Summary
We have examined four data structures in python. Note that none of these types are arrays/vectors with defined mathematical operations. For those, you need to consider numpy.array.
Copyright (C) 2013 by John Kitchin. See the License for information about copying.