Python遍历字典列表调用函数后,如何维持嵌套列表结构?
问题分析与解决方案
你的代码主要有两个问题导致结果是扁平列表:
- 冗余的嵌套循环:
for x in range(len(dList))和for d in dList重复遍历字典列表,还额外加了无意义的if d == dList[x]判断,不仅浪费性能,还容易导致重复处理。 - 未按字典分组存储结果:所有函数返回值都直接追加到同一个列表,没有为每个字典创建独立的子列表,自然无法形成嵌套结构。
修改后的代码(普通循环版)
finalList = [] # 假设dList是已初始化的字典列表,setupTime是已定义的函数 for d in dList: # 为每个字典创建子列表,存储当前字典所有键值对的计算结果 sub_list = [] for k, v in d.items(): sub_list.append(setupTime(k, v)) # 将子列表加入最终嵌套列表 finalList.append(sub_list)
更简洁的列表推导式版本
如果追求代码简洁,可以用嵌套列表推导式一行实现:
finalList = [[setupTime(k, v) for k, v in d.items()] for d in dList]
处理后,finalList的结构会和dList完全对应:每个子列表对应原dList中的一个字典,子列表元素是该字典所有键值对传入setupTime后的返回值。
内容的提问来源于stack exchange,提问作者Arif Rashed
相关产品推荐
相关产品推荐

