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

如何将Python字典的列表值按固定大小拆分为常量分块

字典按指定块大小拆分值列表实现

你可以直接通过遍历字典+列表切片的方式完成拆分,逻辑如下:

  • 遍历原字典的每个键值对
  • 若当前键对应的列表长度 ≤ 分块大小k,直接保留原键存入结果字典
  • 若列表长度 >k,按步长k切片得到所有子列表,按顺序生成原键_1、原键_2...格式的新键,将子列表对应存入结果字典

完整可运行代码

def split_dict_by_chunk_size(origin_dict, k):
    res = {}
    for key, items in origin_dict.items():
        item_count = len(items)
        # 长度不超限直接保留原键
        if item_count <= k:
            res[key] = items
            continue
        # 按步长k切片拆分
        for i in range(0, item_count, k):
            chunk = items[i:i+k]
            new_key = f"{key}_{i//k + 1}"
            res[new_key] = chunk
    return res


# 初始化原始数据
sports = ['soccer','basketball','tennis']
food = ['burger','fried rice', 'spaghetti','curry', 'lamb','wings']
movies = ['spider man', 'batman', 'iron man', 'hustle', 'desperado']
singers = ['drake']
goats = ['messi', 'jordan']
topics = {'sports':sports, 'food':food, 'movies':movies, 'singers':singers, 'goats':goats}

# 测试k=2的拆分场景
result = split_dict_by_chunk_size(topics, k=2)

k=2时的运行结果

运行后得到的结果和你给出的预期输出(修正原示例里的语法笔误后)完全一致:

{
    'goats': ['messi', 'jordan'],
    'sports_1': ['soccer', 'basketball'],
    'sports_2': ['tennis'],
    'food_1': ['burger', 'fried rice'],
    'food_2': ['spaghetti', 'curry'],
    'food_3': ['lamb', 'wings'],
    'movies_1': ['spider man', 'batman'],
    'movies_2': ['iron man', 'hustle'],
    'movies_3': ['desperado'],
    'singers': ['drake']
}

注:代码利用Python列表切片的容错特性,自动处理最后一块元素个数不足k的边界场景,不需要额外编写判断逻辑,传入任意正整数k都可正常完成拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:21:31