Re: String comparison
- To: mathgroup at smc.vnet.net
- Subject: [mg55034] Re: [mg55009] String comparison
- From: "Christoph Lhotka" <lhotka at astro.univie.ac.at>
- Date: Thu, 10 Mar 2005 05:24:38 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi, The solution to your problem ist the function OrderedQ: In[..]:=Sort[alist, OrderedQ[{#1[[3]], #2[[3]]}] &] Out[..]:={{c, 2, abc}, {a, 3, bca}, {b, 1, cba}} OrderedQ[{a,b}] returns true, if a and b are in lexikograohic order, and false otherwise, you can use it for strings and expressions: In[..]:=OrderedQ[{b,a}] Out[..]:=False In[..]:=OrderedQ[{"a","b"}] Out[..]:=True with kind regards ... On Wed, 9 Mar 2005 06:34:34 -0500 (EST) 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. > > Thanks. > -- Christoph Lhotka -- University of Vienna Institute for Astronomy Tuerkenschanzstr. 17 1180 Vienna, Austria fon. +43.1.4277.518.41 mail. lhotka at astro.univie.ac.at