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

存储多份DataLoader的可变长度字典如何实现同步遍历?

解决方案

直接使用Python的可变参数解包语法对字典的values()方法返回结果做解包,传入zip即可适配任意长度的字典:

for index, data in enumerate(zip(*d.values())):
    # 此处编写你的业务逻辑即可
    pass

原理解释

  • d.values()会直接取出字典中存储的所有DataLoader对象,无需手动指定下标适配固定长度的字典
  • 前缀的*是Python的可变参数解包语法,会自动把可迭代对象中的所有元素逐个作为参数传入zip,和手动书写zip(d[0],d[1],d[2])的效果完全一致,适配任意键值对数量的字典场景。

扩展说明

如果你的多个DataLoader长度不一致:

  • 默认zip会以最短的DataLoader长度为准,迭代到最短的那个遍历完成就终止
  • 如果你需要以最长的DataLoader长度为准,缺省位置补自定义填充值,可以使用itertools.zip_longest替换zip:
from itertools import zip_longest

# fillvalue 可自定义为你需要的填充值,比如None、空张量等
for index, data in enumerate(zip_longest(*d.values(), fillvalue=None)):
    # 业务逻辑
    pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:06:00