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

Python如何实现字典内各列表同索引元素分组(忽略空列表)

实现方案

直接用Python标准库itertools.zip_longest即可,不需要安装第三方依赖,对不等长列表、大规模数据的处理效率很高。
zip_longest会以输入序列中最长的列表为基准做逐位聚合,长度不足的位置默认填充None,你只需要提前过滤掉字典里的空列表,最后再把每个聚合组里的None值去掉就行。

参考代码:

from itertools import zip_longest

bbox = {'0': ['a', 'b', 'c', 'l', 'm'],
       '1': ['d', 'e'],
       '2': ['f', 'g'],
       '3': ['h'],
       '4': [],
       '5': ['i', 'j', 'k']}

# 取出字典所有值,过滤掉空列表
valid_lists = [lst for lst in bbox.values() if lst]
# 按索引位跨列表聚合
raw_groups = zip_longest(*valid_lists)
# 去掉每个分组里的填充空值,得到最终结果
output = [[item for item in group if item is not None] for group in raw_groups]

运行后得到的output和预期结果完全一致:

[
    ['a', 'd', 'f', 'h', 'i'], 
    ['b', 'e', 'g', 'j'],
    ['c', 'k'],
    ['l'],
    ['m']
]

注意事项

  • 不要直接用内置函数zip做聚合:zip会以最短的输入列表为基准截断内容,长列表靠后的元素会直接丢失,不符合需求。
  • 这个实现基于迭代器逻辑,内存开销很低,哪怕字典有300个以上键值对、各列表长度未知,都能稳定高效运行。

内容的提问来源于stack exchange,提问作者Muhammad Anas Raza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 00:12:53