I frequently use this pattern to keep track of incoming data (for example, to sum up sales of a specific brand):

=====================================

# read a brand record from a db
...

# keep track of brands seen
obj = brands_seen.get(brandname)
if obj is None:
   obj = Brand()
   brands_seen[brandname] = obj

obj.AddData(...)        # this might for example keep track of sales

=====================================

as you might guess, brands_seen is a dictionary whose keys are brandnames and whose values are brand objects.

Now the point is: is there a cleverer way to do this?

Basically what I'm doing is query the dictionary twice if the object does not exist.

What I would like to understand is if there's some language built-in logic to:

- supply a function which is meant to return a new object
- have the interpreter to locate the point in the dictionary where the key is to be - if the key is already there, it returns the value/object associated and stops - if the key is not there, it calls the supplied function, assigns the returned value to the dictionary and return the object.

Giulio.










--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to