Retrieving an object from a set

MRAB python at mrabarnett.plus.com
Sat Jan 26 03:56:58 CET 2013


On 2013-01-26 00:26, Ian Kelly wrote:
> On Fri, Jan 25, 2013 at 4:45 PM, MRAB <python at mrabarnett.plus.com> wrote:
>> You could first limit the search to only those which it could be:
>>
>>     S & set([y])
>>
>> A search would be:
>>
>>>>> f = [m for m in S & set([y]) if m is y][0]
>>>>> f is y
>> True
>
> But in practice he won't have y, only x.  So that would have to be:
>
>>>> f = [m for m in S & set([x]) if m is x][0]
>>>> f is y
> False
>
> And it turns out that my earlier "intersection" suggestion fails for
> the same reason.
>
It turns out that both S & {x} and {x} & S return {x}, not {y}.

OK, so...

The members that don't equal x are S - {x}.

Remove those and you get the members that _do_ equal x:

 >>> (S - (S - {x})).pop() is y
True




More information about the Python-list mailing list