Functional way to compare things inside a list
Ulrich Eckhardt
ulrich.eckhardt at dominolaser.com
Fri Sep 21 04:52:31 EDT 2012
Am 21.09.2012 00:58, schrieb thorsopia at lavabit.com:
> list = [{'1': []}, {'2': []}, {'3': ['4', '5']}]
>
> I want to check for a value (e.g. '4'), and get the key of the dictionary
> that contains that value.
Note:
1. list is a built-in type, who's name is rebound above
2. The list above contains dictionaries that all only contain a single key?
3. You have strings containing decimal representations of numbers?
> (Yep, this is bizarre.)
The data are really stored in a strange way and you might be able to
make things clearer by reorganizing them a bit.
> some_magic(list, '4')
> => '3'
>
> What's the functional way to do it?
Functional as in functional programming and an emphasis on lazy
evaluation? In that case I'd write a generator that emits the keys where
the values contain the requested string.
> Is it possible to do it with a one-liner?
Yep, filter(), lambda and the 'in' operator. Question remains if this is
readable. Note that you can use a local function, too, if you just want
to reduce the scope/visibility.
Good luck!
Uli
More information about the Python-list
mailing list