> pointList = [
> {lat:40.123,lon:-81.456,
> 'attributes':{'msg':'example','beavers':34, 'distance':18.132}
> },
> {lat:40.12345,lon:-81.45678,
> 'attributes':{'msg':'','beavers':0, 'distance':0.0}
> }
> ]
THis sopunds like its crying out for a class
class Point:
def __init__(self, lat, long, msg, beavers, distance):
self.lat = lat
self.long = long
etc...
Pointlist = [Point(40.123,-81.456,'example',34,18.132),
Point(40.12345,-81.4567,'',0,0.0)]
> If I add an attribute of 'newAtt':'newVal' to
> pointList[1]['attributes'], I want it to automatically add
> 'newAtt':'default' to all the other member's 'attributes'
> dictionary.
You could do that by calling a class method that updates all
of the instances.
> If I delete an attribute, it should delete from all the
> member's dictionaries.
Likewise a class method could do this.
> attributes are limited to string, integer, and float values.
Doesn't really matter! :-)
> Is there an elegant approach that occurs to anyone?
> Is there a data structure that forces all members to have the same
> keys?
A class. Although in Python its always possible to add
instance variables but you have to do it deliberately!
But at least a class will ensure that all the values
that should be there are indeed present.
> Is there an object structure that will let updates to one instance
> affect all instances?
A class method is the traditional way of doing that.
Get the init method to update a global (or class based)
list of instances and write a del() method that removes
itself.
Then a class method can iterate that instance list
doing whatever it needs to do...
HTH,
Alan G.
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor