[Tutor] selecting elements from dictionary
Evert Rol
evert.rol at gmail.com
Wed Sep 15 16:36:08 CEST 2010
> using:
>
> for key, value in xdic.items():
> if 1 in value and 2 in value or 3 in value:
> print key
>
>
> also print keys that have values such as [1,2,3].
>
> In cases where there is [1,2,3] and [1,2] also reported.
>
> How can I extract those keys that have values only [1,2] and [1,3] exclusively.
If you know that elements in a list are unique (so only appear once), you may want to look at using sets.
Evert
> >>> xdic = {75796988: [1, 2, 3], 75797478: [1, 2, 3], 75797887:[1,2], 75797987:[3,1]}
> >>> for key, value in xdic.items():
> ... if 1 in value and 2 in value or 3 in value:
> ... print key
> ...
> 75797987
> 75796988
> 75797478
> 75797887
>
>
> Here all 4 keys appear. Instead I want to get only 75797887:[1,2] and 75797987:[3,1]
> how can I force this.
>
> thanks again.
>
>
>
>
>
> From: Steven D'Aprano <steve at pearwood.info>
> To: tutor at python.org
> Sent: Wed, September 15, 2010 7:27:05 AM
> Subject: Re: [Tutor] selecting elements from dictionary
>
> On Wed, 15 Sep 2010 12:10:59 pm Hs Hs wrote:
>
> > I want to print only those items that have [1,2] and [1,3] in any
> > order, such as [1,2] or [2,1], [3,1] or [1,3]
> >
> > >>> for item in xdic.keys():
> >
> > ... if [1,2] in xdic[item]:
> > ... print item
> >
> > I get a wrong answer,
>
> That's because you ask the wrong question.
>
> [1,2] in xdic[item] doesn't check to see if 1 is in the list, then if 2
> is in the list. It looks to see if one of the items is *exactly* [1,2].
>
> >>> [1,2] in [1,2,3,4]
> False
> >>> [1,2] in [1,2,3,4, [1,2]]
> True
>
>
> > I know the values are there. How can I print
> > only those item that have [1,2] and [1,3]
>
> for key, value in xdic.items():
> if 1 in value and 2 in value or 3 in value:
> print key
>
>
>
>
> --
> Steven D'Aprano
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list