列表中的唯一列表

Yur*_*rev 7 python

给定一个列表,我需要返回一个唯一项列表.我想看看是否有比我提出的更多Pythonic方式:

def unique_lists(l):
    m = {}
    for x in l:
        m[x] = (m[x] if m.get(x) != None else []) + [x]
    return [x for x in m.values()]    

print(unique_lists([1,2,2,3,4,5,5,5,6,7,8,8,9]))
Run Code Online (Sandbox Code Playgroud)

输出:

[[1], [2, 2], [3], [4], [5, 5, 5], [6], [7], [8, 8], [9]]
Run Code Online (Sandbox Code Playgroud)

Joh*_*ooy 9

>>> L=[1,2,2,3,4,5,5,5,6,7,8,8,9]
>>> from collections import Counter
>>> [[k]*v for k,v in Counter(L).items()]
[[1], [2, 2], [3], [4], [5, 5, 5], [6], [7], [8, 8], [9]]
Run Code Online (Sandbox Code Playgroud)

  • 没有理由将'Counter`的创建不能折叠到列表理解中:`[[k]*v代表k,v代表Counter(L).items()]`. (3认同)