按键对列表进行分组的 Pythonic 方式

Fel*_*len 1 python list-comprehension

我有一个如下所示的列表:

[
  [1, "a", 319],
  [1, "b", 991],
  [2, "Cd", 19],
  [3, "88x", 2891],
  [3, "foo", 11]
]
Run Code Online (Sandbox Code Playgroud)

将其变成最“Pythonic”的方式是什么:

[
  [1, [["a", 319], ["b", 991]]],
  [2, [["Cd", 19]]],
  [3, [["88x", 2891], ["foo", 11]]]
]
Run Code Online (Sandbox Code Playgroud)

我知道如何使用for循环等来做到这一点,但我追求一种更干净的方法。

Psi*_*dom 5

这是一个假设列表预先按第一个元素排序的选项:

from itertools import groupby    
[[k, [x[1:] for x in g]] for k, g in groupby(lst, key = lambda x: x[0])]

#[[1, [['a', 319], ['b', 991]]],
# [2, [['Cd', 19]]],
# [3, [['88x', 2891], ['foo', 11]]]]
Run Code Online (Sandbox Code Playgroud)