 
 
 
 
 
 
Re: String comparison
- To: mathgroup at smc.vnet.net
- Subject: [mg55049] Re: [mg55009] String comparison
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 10 Mar 2005 05:25:16 -0500 (EST)
- Reply-to: hanlonr at cox.net
- Sender: owner-wri-mathgroup at wolfram.com
alist={{a,3,"bca"},{b,1,"cba"},
      {c,2,"abc"}};
Sort[alist,OrderedQ[{#1[[3]],#2[[3]]}]&]
{{c, 2, "abc"}, {a, 3, "bca"}, {b, 1, "cba"}}
Sort[alist,!OrderedQ[{#1[[3]],#2[[3]]}]&]
{{b, 1, "cba"}, {a, 3, "bca"}, {c, 2, "abc"}}
Bob Hanlon
> 
> From: yasdfer at yahoo.com
To: mathgroup at smc.vnet.net
> Date: 2005/03/09 Wed AM 06:34:34 EST
> To: mathgroup at smc.vnet.net
> Subject: [mg55049] [mg55009] String comparison
> 
> 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.
> 
> 

