Python 通过uniques从一个列表创建列表列表

Python 通过uniques从一个列表创建列表列表,python,json,algorithm,list,sorting,Python,Json,Algorithm,List,Sorting,我正在尝试转换以下列表: [1,2,2,4,2,1,5,4,3] 在此列表中: [[1,1],[2,2],[3],[4,4],[5]] 有人知道一种快速的方法吗?我将在一个很长的列表上运行这个。这是用python编写的。您可以: >>> from itertools import groupby >>> [list(g) for k, g in groupby(sorted([1,2,2,4,2,1,5,4,3]))] [[1, 1], [2, 2, 2]

我正在尝试转换以下列表:

[1,2,2,4,2,1,5,4,3]
在此列表中:

[[1,1],[2,2],[3],[4,4],[5]]
有人知道一种快速的方法吗?我将在一个很长的列表上运行这个。这是用python编写的。

您可以:

>>> from itertools import groupby
>>> [list(g) for k, g in groupby(sorted([1,2,2,4,2,1,5,4,3]))]
[[1, 1], [2, 2, 2], [3], [4, 4], [5]]
如果您希望在分组前按“长列表”对列表进行排序,您可以执行以下操作:

>>> li.sort()
>>> [list(g) for k, g in groupby(li)]
[[1, 1], [2, 2, 2], [3], [4, 4], [5]]
>>> for k, grp in groupby(li):
...    print k, grp
... 
1 <itertools._grouper object at 0x106ded210>
2 <itertools._grouper object at 0x106ded190>
3 <itertools._grouper object at 0x106ded210>
4 <itertools._grouper object at 0x106ded190>
5 <itertools._grouper object at 0x106ded210>
更好的是,您的问题中没有明确说明,如果您可以将组作为迭代器,根据需要进行计算,您可以:

>>> li.sort()
>>> [list(g) for k, g in groupby(li)]
[[1, 1], [2, 2, 2], [3], [4, 4], [5]]
>>> for k, grp in groupby(li):
...    print k, grp
... 
1 <itertools._grouper object at 0x106ded210>
2 <itertools._grouper object at 0x106ded190>
3 <itertools._grouper object at 0x106ded210>
4 <itertools._grouper object at 0x106ded190>
5 <itertools._grouper object at 0x106ded210>

这是一个糟糕的问题,因为它没有显示您尝试了什么,或者您对问题有任何理解。你问的问题很清楚,但一个好的问题也会说明你为什么会遇到麻烦。也就是说,您希望做的事情可以通过排序和reduce轻松完成。1-这与JSON有什么关系?2-你的结果列表没有写出来的意义,我想列表中应该有第三个2?至少描述一下你想要的结果列表。对列表进行排序。创建列表的新列表。将列表中的项目附加到列表列表中的最后一个列表中。为什么要将此标记为JSON?对于长列表,如OP所述,.sort实际上可能比排序更有益。