给出嵌套列表的列表:

pairs = [['A', 'berries'], ['A', 'bannanas], ['B', 'apples'], ['C', 'oranges'], ['C', 'apricots'], ['C', 'tomatoes']]

如何通过将l个元素分组为"列表类型"(如(*))来嵌套它们:

[
  [['A', 'berries'], ['A', 'bannanas]], 
  [['B', 'apples']], 
  [['C', 'oranges'], ['C', 'apricots'], ['C', 'tomatoes']]
]

到目前为止,我try 了以下几种方法:

def get_type(e):
    return str(e[0])


for e in pairs:
    l = []
    if e[0] == get_type(e):
        l.append(e)
    else:
        pass

print(l)

但是,上面不是对相同类型的元素进行分组:

[['A', 'berries']]
[['A', 'bannanas']]
[['B', 'apples']]
[['C', 'oranges']]
[['C', 'apricots']]
[['C', 'tomatoes']]

相反,它只是将每个元素添加到创建组的新列表中,如(*).

推荐答案

您可以使用itertools模块中的groupby方法:

from itertools import groupby

grouped_list = [list(group) for _, group in groupby(l, lambda x: x[0])]

>>> grouped_list
# [[['A', 'berries'], ['A', 'bannanas']], [['B', 'apples']], [['C', 'oranges'], ['C', 'apricots'], ['C', 'tomatoes']]]

Python相关问答推荐

Python在tuple上操作不会通过整个单词匹配

如何让剧作家等待Python中出现特定cookie(然后返回它)?

在Python中管理打开对话框

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

未知依赖项pin—1阻止conda安装""

如何保持服务器发送的事件连接活动?

实现神经网络代码时的TypeError

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

判断solve_ivp中的事件

try 检索blob名称列表时出现错误填充错误""

在Python中计算连续天数

numpy.unique如何消除重复列?

在电影中向西北方向对齐""

Python Mercury离线安装

Python协议不兼容警告

TypeError:';Locator';对象无法在PlayWriter中使用.first()调用

具有不匹配列的2D到3D广播

为什么按下按钮后屏幕的 colored颜色 保持不变?

查找数据帧的给定列中是否存在特定值