Function to prune dictionary keys not working

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Wed Jun 28 20:33:28 EDT 2006


Girish Sahani a écrit :
> hi ppl,
>  Here is a simple function to remove those keys of a dictionary whose
> values are less than some specified value.
 >
> But it isnt working.

"is not working" is the worst possible description of a problem.

> def prune(d,cp):
>     l = []
>     for rule,value in d.iteritems():
>         #print value
>         if value >= cp:
>             l.append(rule)
>     return l

This doesn't remove anything from the dict - it returns a list of keys 
for which values are >= cp value. FWIW, a simple expression is enough to 
do this:
[k for k, v in d.items() if v >= cp]

The algorithm for what you described would be:
def prune(dic, cmp):
   for k, v in dic.items():
     if v < cmp:
       del dic[k]

  	
>>>>d = {'be=>c': '1.00', 'c=>da': '0.50', 'ea=>b': '0.33', 'be=>d':
> 
> '0.50', 'c=>ba': '0.33', 'bd=>a': '1.00', 'a=>cb': '0.33', 'ea=>c':
> '0.67', 'a=>cd': '0.50', 'e=>ac': '0.40', 'e=>ab': '0.20', 'c=>bd':
> '0.33', 'e=>cb': '0.40', 'ed=>b': '0.25', 'ed=>c': '0.50'}
> 
>>>>cp = 0.5

You are comparing floats with strings...



More information about the Python-list mailing list