Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: String comparison

  • To: mathgroup at smc.vnet.net
  • Subject: [mg55043] Re: String comparison
  • From: "Ray Koopman" <koopman at sfu.ca>
  • Date: Thu, 10 Mar 2005 05:24:59 -0500 (EST)
  • References: <d0mo83$755$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

yasdfer at yahoo.com wrote:
> Hi,
>
> I want to sort a list/table based on an arbitrary "column".
>
> In[1]:= alist = {{a, 3, "bca"}, {b, 1, "cba"}, {c, 2, "abc"}};
>
> If I want to sort based on say the second column, I can use:
>
> In[2]:= Sort[alist, #1[[2]] > #2[[2]] &]
> Out[2]:= {{a, 3, bca}, {c, 2, abc}, {b, 1, cba}}
>
> With the string column however, the method fails:
>
> In[3]:= Sort[alist, #1[[3]] > #2[[3]] &]
> Out[3]:= {{a, 3, bca}, {b, 1, cba}, {c, 2, abc}}
>
> I can get away with,
>
> In[4]:= Reverse[RotateRight[#, 2] & /@ Sort[RotateLeft[#, 2] & /@
> alist]]
> Out[4]:= {{b, 1, cba}, {a, 3, bca}, {c, 2, abc}}
>
> Question is, what function can I pass to Sort[] directly to avoid the
> bending and twisting?
>
> In general, how does one compare strings for lexical ordering?
Noticed
> that, Greater["a", "b"] does not evaluate either.

Use OrderedQ:

In[5]:= Sort[alist, OrderedQ[{#2[[3]],#1[[3]]}]&]
Out[5]= {{b,1,cba},{a,3,bca},{c,2,abc}}


  • Prev by Date: Re: symbolic approximation (formular manipulation)
  • Next by Date: Re: Canonical order...
  • Previous by thread: String comparison
  • Next by thread: Re: String comparison