Dict comprehension help

Ian Kelly ian.g.kelly at gmail.com
Wed Dec 5 22:38:22 EST 2012


On Wed, Dec 5, 2012 at 8:03 PM, Joseph L. Casale
<jcasale at activenetwerx.com> wrote:
> I get a list of dicts as output from a source I need to then extract various dicts
> out of. I can easily extract the dict of choice based on it containing a key with
> a certain value using list comp but I was hoping to use dict comp so the output
> was not contained within a list.
>
> reduce(lambda x,y: dict(x.items() + y.items()), filter(lambda z: z['key'] == value, my_list))
>
> where my_list is a list of dicts. The premise is all dicts in the list have a unique
> value for z['key'].
>
> Anyone have a pointer as to how I might tackle this without lambdas and only
> using dict comp?

{k: v for d in my_list if d['key'] == value for (k, v) in d.items()}

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?

for d in my_list:
    if d['key'] == value:
        result = d
        break
else:
    raise ValueError("Value not found!")



More information about the Python-list mailing list