comparing two lists

kyosohma at gmail.com kyosohma at gmail.com
Thu Aug 23 13:03:14 EDT 2007


On Aug 23, 11:27 am, Ladislav Andel <lad... at iptel.org> wrote:
> Hi,
> what would be the most efficient way to do following?
>
> I have a list of dictionaries  taken from DB e.g.
> dblist = [{'id:1, 'host':'google.com','ip_address':'1.2.3.4'},
> {'id:3, 'host':'yahoo.com','ip_address':'5.6.7.8'},
> {'id:9, 'host':'msn.com','ip_address':'11.3.2.3'}]
>
> and list of object instances in memory(it's just for example)
> which are looping within itself and testing particular hosts
>
> memlist = [<instance 1>,<instance 2>]
> memlist[0].id  is 1 and  memlist[0].host is google.com etc.
> memlist[1].id  is 9 and  memlist[1].host is msn.com etc.
>
> Now I want to add a new instance to memlist since id=3(in dblist) is not
> in memlist.
> How would you iterate through it and insert a new instance?
>
> The result should be:
> memlist = [<instance 1>,<instance 2>, <instance 3>]
> memlist[0].id  is 1 and  memlist[0].host is google.com etc.
> memlist[1].id  is 3 and  memlist[1].host is yahoo.com etc.
> memlist[2].id  is 9 and  memlist[2].host is msn.com etc.
>
> Furthermore, I can have the opposite situation.
> This time I need to remove from memlist a host which is not in dblist.
> How would you do this?
>
> The way how it works is that DBlist is loaded every 10 minutes and
> compares with memlist.
> The memlist should be the same as dblist.
>
> Could you help me, please?
> I'm working on my version of this but somebody might be quicker than me.
> In case I have it done I will post it.
>
> Thanks,
> Lada
>
> There is
>
> and wt

On lists that change in memory, I use the following looping structure:

for i in range(len(in_memory_list)-1,-1,-1)

This loops over the list backwards. I found this method here:
http://mail.python.org/pipermail/python-list/1999-September/012451.html

Hopefully this will fulfill your needs. I've used it to great effect!

Mike




More information about the Python-list mailing list