如何在Mathematica中基于元素的总数在列表上进行类似Tally的操作

Qia*_* Li 3 wolfram-mathematica

例如,我有一个列表,如:

{{1, 2, 3}, {6}, {4, 5}, {1, 6}, {2, 2, 3, 2}, {9}, {7}, {2, 5}}
Run Code Online (Sandbox Code Playgroud)

我希望根据列表元素的总数得到一个统计列表.

在这种情况下,我希望输出为:

{{6, {{1, 2, 3}, {6}}, {7, {{2, 5}, {1, 6}, {7}}}, {9, {{4, 5}, {2, 2, 3, 2}, {9}}}}}
Run Code Online (Sandbox Code Playgroud)

如何在Mathematica中方便地做到这一点?

非常感谢.

Sim*_*mon 5

这是我的尝试 - 比尤达的简单一点

lst = {{1, 2, 3}, {6}, {4, 5}, {1, 6}, {2, 2, 3, 2}, {9}, {7}, {2, 5}};

{Total@First@#, #} & /@ GatherBy[lst, Total]
Run Code Online (Sandbox Code Playgroud)

如果您不想重复元素,那么您可以使用

{Total@First@#, Union[#]} & /@ GatherBy[lst, Total]
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的想要一个类似计数的操作

{Total@First@#, Tally[#]} & /@ GatherBy[lst, Total]
Run Code Online (Sandbox Code Playgroud)