Finding lowest value in dictionary of objects, how?

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Mon Nov 19 03:57:54 EST 2007


On Mon, 19 Nov 2007 00:18:33 -0800, davenet wrote:

> The objects are defined as follows:
> 
> class Block:
>    def __init__(self,addr):
>       self.addr = addr
>       self.age = 0
> 
> My dictionary is defined as:
>    blocks = {}
> 
> I have added 1000 (will hold more after I get this working) objects. I
> need to find the lowest age in the dictionary. If there is more than
> one age that is lowest (like if several of them are '1', etc), then I
> can just pick randomly any that equal the lowest value. I don't care
> which one I get.
> 
> I saw the following code here but I don't know how to use this sample
> to get at the values I need in the blocks object.
> 
> def key_of_lowest(self,addr)
>    lowest = min(self.blocks.values())
>    return [k for k in self.blocks if self.blocks[k]==val][0]
> 
> This one returns the lowest value Object, but not the lowest value of
> age in all the Objects of the table.

In the example `min()` finds the object with the lowest `id()`.  To change
that you can implement the `__cmp__()` method on your `Block` objects.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list