On Mon, Mar 9, 2009 at 10:28 AM, ski <nor...@khine.net> wrote: > hello, > > i have this list which contains a number of dictionaries. > >>>>d1 = [{'is_selected': False, 'id': 'AAC', 'title': 'Association of >>>> Airline Cons.'}, {'is_selected': False, 'id': 'AALA', 'title': 'Adv. >>>> Activity Licence. Auth.'}, {'is_selected': False, 'id': 'ABPCO', 'title': >>>> 'Association of British Prof. Conf. Organisation'}, {'is_selected': True, >>>> 'id': 'ABTA', 'title': 'Association of British Travel Agents'}, >>>> {'is_selected': False, 'id': 'ABTOT', 'title': 'Association of Bonded >>>> Travel >>>> Organisation Trust'}, {'is_selected': False, 'id': 'AERA', 'title': >>>> 'Association of Europe Rail Agents'}] > > what would be the correct way to create a new list with the dictionaries but > only for dictionaries with key > > 'is_selected': False > > here is what I have tried, so far, perhaps there is a better and less error > prone method: > >>>> d2 = [] >>>> for x in d1: > ... if False in x.values(): > ... d2.append(x)
This doesn't take advantage of dict lookup and it doesn't do exactly what you asked; it will exclude dicts having any False value, not just for is_selected. Better would be d2 = [] for x in d1: if x['is_selected'] != False: d2.append(x) This can be further simplified; you probably can just test x['is_selected'] without comparing to False, and you can use a list comprehension to simplify the structure: d2 = [ x for x in d1 if x['is_selected'] ] Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor