[Tutor] dictionaries help

davidwilson at Safe-mail.net davidwilson at Safe-mail.net
Fri Jul 24 01:09:55 CEST 2009


Hello again,
Here is my full attempt, can you please tell me if it is OK and if there should be any improvements

>>>	ws_industry = ('it', 'science')
>>> code = ws_industry[0]
>>> active = []
>>> industries = [{'code': 'it', 'name': 'Information Technology'}, {'code': 'science', 'name': 'Science'}, {'code': 'biology', 'name': 'Biology'}]
>>> for industry in industries:
	    if industry['code'] in ws_industry:
                active.append({
                    'code': industry['code'],
                    'name': industry['name'],
                    'isdefault': code == industry['code']})

>>># Not active industry
>>> not_active = [x for x in industries if x['code'] not in ws_industry ]
>>>not_active.sort(lambda x, y: cmp(x['name'], y['name']))
>>> return [active, non-active]

Line [6] i was not too sure if it could be written better or more efficient.

Basically I have a big list of industries and I want to verify for each member whether they are active or not active.

The industry list of dictionaries will stay fixed at about 25 items, whereas the ws_industry tuple will change depending. I have to go through about 20,000 items.



-------- Original Message --------
From: davidwilson at Safe-mail.net
Apparently from: tutor-bounces+davidwilson=safe-mail.net at python.org
To: tutor at python.org
Subject: Re: [Tutor] dictionaries help
Date: Thu, 23 Jul 2009 18:14:01 -0400

> thank you for all your answers
> 
> 
> -------- Original Message --------
> From: Norman Khine <norman at khine.net>
> Apparently from: tutor-bounces+davidwilson=safe-mail.net at python.org
> To: tutor at python.org
> Subject: Re: [Tutor] dictionaries help
> Date: Thu, 23 Jul 2009 21:59:01 +0100
> 
> > Also you can use list comprehension
> > 
> > In [1]: my_lst = [{'code': 'aaa', 'name': 'a name'}, {'code': 'bbb',
> > 'name': 'b name'}]
> > 
> > In [2]: my_code = 'aaa'
> > 
> > In [3]: print [d for d in my_lst if d['code'] == my_code]
> > ------> print([d for d in my_lst if d['code'] == my_code])
> > [{'code': 'aaa', 'name': 'a name'}]
> > 
> > In [4]:
> > 
> > 
> > On Thu, Jul 23, 2009 at 6:04 PM, Alan Gauld<alan.gauld at btinternet.com> wrote:
> > >
> > > "Alan Gauld" <alan.gauld at btinternet.com> wrote
> > > Oops!
> > > Should be:
> > >
> > >> def findDict(value, dictList):
> > >>  for dct in dictList:
> > >>      if dct.get('code', '') == my_code
> > >
> > >        if dct.get('code', '') == value
> > >
> > >>         return dct
> > >
> > >
> > >> HTH,
> > >>
> > >>
> > >> --
> > >> Alan Gauld
> > >> Author of the Learn to Program web site
> > >> http://www.alan-g.me.uk/
> > >
> > > _______________________________________________
> > > Tutor maillist  -  Tutor at python.org
> > > http://mail.python.org/mailman/listinfo/tutor
> > >
> > _______________________________________________
> > Tutor maillist  -  Tutor at python.org
> > http://mail.python.org/mailman/listinfo/tutor
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor


More information about the Tutor mailing list