Dennis Lee Bieber wrote: > On Sun, 17 Jun 2018 17:37:25 +0100, MRAB <pyt...@mrabarnett.plus.com> > declaimed the following: > >>On 2018-06-17 15:47, Ganesh Pal wrote: >>>> >>> {k: o_num[k] for k in wanted & o_num.keys() if o_num[k] is not >>>> >>> {None} >>> >>> Thanks peter this looks better , except that I will need to use the >>> logial 'and' operator or else I will get a TypeError >>> >>>>>> {k: o_num[k] for k in wanted & o_num.keys() if o_num[k] is not None} >>> >>> TypeError: unsupported operand type(s) for &: 'set' and 'list' >>> >>Peter said that you need to use viewkeys() instead of keys() in Python 2: >> >> >>> {k: o_num[k] for k in wanted & o_num.viewkeys() if o_num[k] is not >>None} >> > > What's wrong with the simple > >>>> o_num = { "one" : 1, > ... "three" : 3, > ... "bar" : None, > ... "five" : 5, > ... "rum" : None, > ... "seven" : None, > ... "brandy" : None, > ... "nine" : 9, > ... "gin" : None } >>>> args_list = [ "one", "three", "seven", "nine" ] >>>> >>>> { k : o_num[k] for k in args_list if o_num.get(k, None) is not None } > {'nine': 9, 'three': 3, 'one': 1} >>>>
It's hidden here because of the removal of None values, but in the generic case when you say "give me all x in a that are also in b" instead of "give me the intersection of a and b" you are overspecifying the problem. -- https://mail.python.org/mailman/listinfo/python-list