"comprehend" into a single value
Ned Batchelder
ned at nedbatchelder.com
Sun Oct 8 07:40:23 EDT 2017
On 10/8/17 1:00 AM, Andrew Z wrote:
> and how about adding "IF" into the mix ?
>
> as in :
>
> a=0
>
> dict= {10: ['a',1,'c'], 20: ['d',2,'f']}
>
> for i in dict:
>
> p+= 10 if dict[i][1] in [1,2,3,4,5] else 0
>
>
> can i "squish" "for" and "if" together ? or will it be too perl-ish ?
sum(10 for v in dict.values() if v[1] in [1,2,3,4,5])
or:
sum((10 if v[1] in [1,2,3,4,5] else 0) for v in dict.values())
(in case you actually need something other than 0.)
Also, note that if your list of five values is actually much longer than
five, then you want a set:
sum((10 if v[1] in {1,2,3,4,5} else 0) for v in dict.values())
--Ned.
>
>
>
>
> On Sun, Oct 8, 2017 at 12:37 AM, Andrew Z <formisc at gmail.com> wrote:
>
>> Nathan, Bob - on the money. Thank you !
>>
>> On Sat, Oct 7, 2017 at 11:30 PM, bob gailer <bgailer at gmail.com> wrote:
>>
>>> On 10/7/2017 11:17 PM, Nathan Hilterbrand wrote:
>>>
>>>> dict= {10: ['a',1,'c'], 20: ['d',2,'f']}
>>>> p = sum([dict[i][1] for i in dict])
>>>>
>>>> Something like that?
>>>>
>>> Ah, but that's 2 lines.
>>>
>>> sum(val[1] for val in {10: ['a',1,'c'], 20: ['d',2,'f']}.values())
>>>
>>> On Sat, Oct 7, 2017 at 11:07 PM, Andrew Z <formisc at gmail.com> wrote:
>>>> Hello,
>>>>> i wonder how can i accomplish the following as a one liner:
>>>>>
>>>>> dict= {10: ['a',1,'c'], 20: ['d',2,'f']}
>>>>> p = 0
>>>>> for i in dict:
>>>>> p += dict[i][1]
>>>>>
>>>>>
>>>>> Thank you
>>>>> --
>>>>> https://mail.python.org/mailman/listinfo/python-list
>>>>>
>>>>>
>>> --
>>> Image and video hosting by TinyPic
>>>
>>
More information about the Python-list
mailing list