On 2013-01-06 22:33, Hans Mulder wrote:
On 6/01/13 20:44:08, Joseph L. Casale wrote:
I have a dataset that consists of a dict with text descriptions and values that 
are integers. If
required, I collect the values into a list and create a numpy array running it 
through a simple
routine: data[abs(data - mean(data)) < m * std(data)] where m is the number of 
std deviations
to include.


The problem is I loos track of which were removed so the original display of 
the dataset is
misleading when the processed average is returned as it includes the removed 
key/values.


Ayone know how I can maintain the relationship and when I exclude a value, 
remove it from
the dict?

Assuming your data and the dictionary are keyed by a common set of keys:

for key in descriptions:
     if abs(data[key] - mean(data)) >= m * std(data):
         del data[key]
         del descriptions[key]

It's generally a bad idea to modify a collection over which you're
iterating. It's better to, say, make a list of what you're going to
delete and then iterate over that list to make the deletions:

deletions = []

for key in in descriptions:
    if abs(data[key] - mean(data)) >= m * std(data):
        deletions.append(key)

for key in deletions:
    del data[key]
    del descriptions[key]

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

Reply via email to