Dict comprehension help

Peter Otten __peter__ at web.de
Thu Dec 6 11:45:09 CET 2012


Joseph L. Casale wrote:

[Ian Kelly]
>> {k: v for d in my_list if d['key'] == value for (k, v) in d.items()}
> 
> Ugh, had part of that backwards:) Nice!
> 
>> However, since you say that all dicts have a unique value for
>> z['key'], you should never need to actually merge two dicts, correct?
>> In that case, why not just use a plain for loop to search for the
>> dict?
> 
> The reason is that I need several of these in an init function and they
> stack up nicely where as the loops get unruly in length, but I don't
> disagree.

You could put the loop into a helper function, but if you are looping 
through the same my_list more than once why not build a lookup table

my_dict = {d["key"]: d for d in my_list}

and then find the required dict with

my_dict[value]




More information about the Python-list mailing list