在Mathematica中重新排序列表元素的更好方法

Qia*_* Li 3 wolfram-mathematica

我想按顺序重新排序Tally[Characters["2723198931"]]每个元素的第一个组件的结果lst = {"3", "1", "2", "9"}.也就是说,我想要输出{{{"3", 2}}, {{"1", 2}}, {{"2", 2}}, {{"9", 2}}}.

目前我有一种丑陋的解决方案,但想知道是否有人可以帮助提供简洁的解决方案.非常感谢.

Nas*_*ser 5

一种方式可能是

data = Tally[Characters["2723198931"]];
lst = {"3", "1", "2", "9"};

(*algorithm*)

pos =  Position[data[[All, 1]], #] & /@ lst;
Extract[data, pos]
Run Code Online (Sandbox Code Playgroud)

产量

{{{"3", 2}}, {{"1", 2}}, {{"2", 2}}, {{"9", 2}}}
Run Code Online (Sandbox Code Playgroud)

更新2:37 am

上面的屏幕截图,我在Windows 7上使用v 8.04

在此输入图像描述