MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A list based table join?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg112965] Re: A list based table join?
  • From: Albert Retey <awnl at gmx-topmail.de>
  • Date: Fri, 8 Oct 2010 04:49:20 -0400 (EDT)
  • References: <i8jteq$aco$1@smc.vnet.net>

Am 07.10.2010 09:39, schrieb Leo Ditolaghi:
> Hi all,
> 
> (noob Mathematica question:)
> 
> If I have two lists, how do I determine the indices at which the 1st list
> elements are matched by the elements of the second, and then use these
> matching indices to extract corresponding columns in the 1st list (sort of a
> simulated database join)? I.e.,
> 
> x = {{"hello", 27},
> {"bye", 30},
> {"hello", 54},
> {"seeya", 100},
> {"hi", 9}}
> 
> y = {"hello", "hi"}
> 
> where x is the source table, and y is the select criteria (so to speak.)
> 
> I wish to produce z, where y defines which elements of x to extract:
> 
> z = {27,54,9}
> 
> I know this should be easy and elegant, but I am going in circles
> with list functions.

These are short, might qualify as "elegant", I'm not so sure about easy
and I'm sure that there are more efficient ways to to this when x or y
get large. On the other hand: "premature optimization is the root of all
evil"

Cases[x, {Alternatives @@ y, val_} :> val]

Select[x, MemberQ[y, #[[1]]] &][[All, 2]]


hth,

albert


  • Prev by Date: Re: Find minimum number of operations
  • Next by Date: Re: A list based table join?
  • Previous by thread: A list based table join?
  • Next by thread: Re: A list based table join?