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

如何用Python按子列表中间值构建特定格式的字典?

按子列表中间值分组构建字典的实现方法

嗨,这个需求其实很容易实现,我给你两种实用的写法:

方法一:基础循环判断

这是最直观的方式,手动处理字典的键是否存在:

a = [[1,2,3], [4,2,7], [5,2,3], [7,8,5]]
b = {}

# 遍历每个子列表
for sublist in a:
    # 取子列表的中间值(因为你的子列表都是3个元素,所以索引1就是中间项)
    key = sublist[1]
    # 如果键已存在,就把当前子列表追加到对应列表里
    if key in b:
        b[key].append(sublist)
    # 如果键不存在,就创建新的键值对,值是包含当前子列表的列表
    else:
        b[key] = [sublist]

print(b)
# 输出结果:{2: [[1, 2, 3], [4, 2, 7], [5, 2, 3]], 8: [[7, 8, 5]]}

方法二:用collections.defaultdict简化代码

Python的标准库collections里的defaultdict可以帮我们省去判断键是否存在的步骤,代码更简洁:

from collections import defaultdict

a = [[1,2,3], [4,2,7], [5,2,3], [7,8,5]]
# 初始化一个默认值为列表的字典
b = defaultdict(list)

for sublist in a:
    # 直接往对应键的列表里追加元素就行,不用管键是否存在
    b[sublist[1]].append(sublist)

# 如果你需要把defaultdict转换成普通字典(可选操作)
b = dict(b)

print(b)

拓展小提示

如果你的子列表长度不固定(比如不是都为3),可以用len(sublist)//2来计算中间元素的索引,这样代码更通用:

key = sublist[len(sublist) // 2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:07:40