Skip to main content
 首页 » 编程设计

python之如何按条件键对二维列表进行分组

2025年05月04日19JustinYoung

我有这个代码:

from itertools import groupby 
a = [[1,'n'],[2,'n'],[3,'n'],[4,'d'],[5,'n']] 
b = [list(group) for key, group in groupby(a, lambda x: x[1] if x[1]=='n' else None)] 
print(b) 

输出:

[[[1, 'n'], [2, 'n'], [3, 'n']], [[4, 'd']], [[5, 'n']]] 

预期输出:

[[[1, 'n'], [2, 'n'], [3, 'n']], [[5, 'n']]] 

请您参考如下方法:

您将 if 放在了错误的位置。它应该是列表理解的过滤器,而不是 groupby 键函数的一部分。

>>> [list(group) for key, group in groupby(a, lambda x: x[1]) if key=='n'] 
[[[1, 'n'], [2, 'n'], [3, 'n']], [[5, 'n']]]