Re: easier method for Flatten[Position[list2,x_x...??
- To: mathgroup at smc.vnet.net
- Subject: [mg94024] Re: easier method for Flatten[Position[list2,x_x...??
- From: Raffy <raffy at mac.com>
- Date: Tue, 2 Dec 2008 00:42:37 -0500 (EST)
- References: <gh0jlg$5mu$1@smc.vnet.net>
On Dec 1, 7:00 am, "Van Der Burgt, Maarten" <Maarten.VanDerBu... at icos.be> wrote: > Dear all, > > Below I have two lists. > > The elements x in list1 all appear again in the 2nd level of list2 > together with an associated parameter xP. > > I want to extract the xP as illustrated below. > > I have the feeling it can be done in an easier way. > > Does anyone have an idea how? > > Thanks for your help, > > Maarten > > list1={a,b,b,e}; > > list2={{a,aP},{b,bP},{c,cP},{d,dP},{e,eP},{f,fP}}; > > pos = Flatten[Position[list2,x_List/;x[[1]]==#]&/@list1]; > > list2[[pos,2]] > > Out-> {aP,bP,bP,eP} A simple replacement will work: Replace[ list1, Rule @@@ list2, {1} ] Additionally, you can tag unmapped keys: Replace[ list1, Join[ Rule @@@ list2, { x_ :> unknown[x] } ], {1} ] Or, remove unmapped keys: Replace[list1, Join[ Rule @@@ list2, { _ -> Sequence[] } ], {1} ]