searching a list of dictionaries for an element in a list.
Sion Arrowsmith
siona at chiark.greenend.org.uk
Wed Aug 10 09:13:41 EDT 2005
Dan <dan at cellectivity.com> wrote:
>> [ someone else wrote: ]
>> I want to search list1, and the result should be all dictionaries where
>> primarycolor is in input. I can do this using a double for-loop, but is
>> there a more efficent way?
>
>Of course. :-)
>
>L = [dict for dict in list1 if dict['primarycolor'] in input]
Note that (1) shadowing builtin dict is a bad idea and (2) that's
still two nested loops -- I think you do theoretically better with
input_set = set(input)
output_list = [ d for d in dict_list if d['primarycolor'] in input_set ]
but I suspect input would have to be a rather large list to favour
this.
--
\S -- siona at chiark.greenend.org.uk -- http://www.chaos.org.uk/~sion/
___ | "Frankly I have no feelings towards penguins one way or the other"
\X/ | -- Arthur C. Clarke
her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
More information about the Python-list
mailing list