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

如何对含字典列表的Python字典实现高效分页?

Python嵌套字典列表的高效分页实现

要实现嵌套结构(外层为字典,值为字典列表)的跨设备分页,避免预扁平化所有数据是性能最优的核心思路——如果数据量极大,预扁平化会占用大量内存,按需遍历计算才能保证内存效率与执行速度。

实现代码

def paginate_nested_dict(data, page, page_size):
    if page < 1 or page_size < 1:
        raise ValueError("页码和页大小必须大于0")
    
    # 计算需要跳过的元素总数
    offset = (page - 1) * page_size
    result = {}
    # 记录还需要取多少条数据
    remaining = page_size
    
    for device, items_list in data.items():
        list_len = len(items_list)
        
        # 如果当前列表长度小于偏移量,直接跳过整个列表,更新偏移量
        if offset >= list_len:
            offset -= list_len
            continue
        
        # 计算从当前列表需要取的元素数量
        take_count = min(list_len - offset, remaining)
        selected_items = items_list[offset:offset + take_count]
        
        # 将选中元素加入结果
        result[device] = selected_items
        
        # 更新剩余需要取的数量,取够则提前终止循环
        remaining -= take_count
        if remaining <= 0:
            break
    
    return result

性能优势

  • 低内存占用:无需预先合并所有数据为大列表,仅在遍历过程中按需提取元素,适合超大规模数据集
  • 高效遍历:取够所需数据后立即终止循环,避免不必要的遍历操作
  • 时间复杂度低:仅涉及简单的索引切片与数值计算,实际执行复杂度为O(k)(k为需要遍历的设备数+取出的元素数)

示例验证

先定义测试数据:

items = {
    "device-1": [
        {"a": 1, "b": 15},
        {"a": 11, "b": 25},
        {"a": 21, "b": 35},
        {"a": 31, "b": 45}
    ],
    "device-2": [
        {"a": 100, "b": 150},
        {"a": 110, "b": 250},
        {"a": 210, "b": 350},
        {"a": 310, "b": 450}
    ]
}

测试Page=1,PageSize=3

page1 = paginate_nested_dict(items, page=1, page_size=3)
print(page1)
# 输出:
# {'device-1': [{'a': 1, 'b': 15}, {'a': 11, 'b': 25}, {'a': 21, 'b': 35}]}

测试Page=2,PageSize=3

page2 = paginate_nested_dict(items, page=2, page_size=3)
print(page2)
# 输出:
# {'device-1': [{'a': 31, 'b': 45}], 'device-2': [{'a': 100, 'b': 150}, {'a': 110, 'b': 250}]}

边界测试(Page=3,PageSize=3)

总数据共8条,第三页仅剩余2条:

page3 = paginate_nested_dict(items, page=3, page_size=3)
print(page3)
# 输出:
# {'device-2': [{'a': 210, 'b': 350}, {'a': 310, 'b': 450}]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:13:26