You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按子列表末尾值对Python列表进行分组?

Python按子列表末尾元素分组的实现方法

当然可以实现,用Python的字典就能轻松搞定,最方便的是用collections里的defaultdict,步骤很简单:

方法一:使用collections.defaultdict

from collections import defaultdict

c_list = [[1,2,1],[4,6,8],[3,4,1],[3,2,8]]
# 初始化一个默认字典,每个键对应的默认值是空列表
group_dict = defaultdict(list)

# 遍历每个子列表,按末尾元素分组
for sublist in c_list:
    # 取子列表最后一个元素当分组键
    key = sublist[-1]
    group_dict[key].append(sublist)

# 把分组结果转换成你要的格式:组内元素多就留嵌套列表,单个元素就直接用子列表
result = [group if len(group) > 1 else group[0] for group in group_dict.values()]
print(result)
# 输出:[[[1, 2, 1], [3, 4, 1]], [[4, 6, 8], [3, 2, 8]]]

方法二:不用额外模块,用普通字典实现

如果不想导入模块,用基础字典也能写:

c_list = [[1,2,1],[4,6,8],[3,4,1],[3,2,8]]
group_dict = {}

for sublist in c_list:
    key = sublist[-1]
    # 键不存在就创建空列表
    if key not in group_dict:
        group_dict[key] = []
    group_dict[key].append(sublist)

# 同样转换格式
result = [group if len(group) > 1 else group[0] for group in group_dict.values()]

注:你给出的示例结果里,末尾为8的两个子列表各自为组,这和“按末尾元素相同分组”的逻辑矛盾,应该是表述或示例有误。上面的代码是按常规的“同末尾元素归为一组”逻辑实现的,如果有额外分组条件,可以再补充规则调整。

内容的提问来源于stack exchange,提问作者didem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:45