On 22 Nov 2005 19:52:40 -0800, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
> >Bengt Richter wrote: >> >>> def my_search(another, keys, x): return dict((k,another[k]) for k in >> keys if another[k]>x) >> ... >> >>> my_search(another, 'cb', .3) >> {'b': 0.35806602909756235} >> >>> my_search(another, 'abcd', .4) >> {'a': 0.60649466203365532, 'd': 0.77440643221840166} >> >Do you need to guard the case "k not in another" ? > Good catch ;-) What did the OP want as a value if any for that case? None? or no entry at all? Taking a cue from Mike, I like the set method of getting the common keys, to eliminate the entry (untested) def my_search(another, keys, x): return dict((k,another[k]) for k in (set(another)&set(keys)) if another[k]>x) otherwise, to get Nones, maybe (untested) def my_search(another, keys, x): return dict((k,another.get(k)) for k in keys if k not in another or another[k]>x) Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list