For specific keys , extract non empty values in a dictionary

MRAB python at mrabarnett.plus.com
Sun Jun 17 12:37:25 EDT 2018


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}

Using 'and' instead won't give the correct result.

> 
> Example :
> 
>>>>print {k: o_num[k] for k in wanted and o_num.keys() if o_num[k] is not
> None}
>     {'nine': 9, 'five': 5, 'three': 3, 'one': 1}
> 
> 
> 
> On Sat, Jun 16, 2018 at 11:12 PM, Peter Otten <__peter__ at web.de> wrote:
> 
>> Ganesh Pal wrote:
>>
>> > *How do I check  few specific/selected  keys in a dictionary and extract
>> > their values if they are not empty*
>>
>> You mean not None.
>>
>> > 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"]
>>
>> > *Output:*
>> >
>> > *1 3 9*
>>
>> >>> wanted = {"one", "three", "seven", "nine"}
>> >>> {k: o_num[k] for k in wanted & o_num.keys() if o_num[k] is not None}
>> {'one': 1, 'nine': 9, 'three': 3}
>>
>> > I am a Python 2.7 user and on Linux box
>>
>> You have to replace keys() with viewkeys() in Python 2.
>>



More information about the Python-list mailing list