如何将含元组的嵌套列表转换为字典列表?循环尝试失效求助
解决方法:将嵌套子列表批量转换为字典列表
我来帮你搞定这个问题!你之前的代码其实已经接近正确了,只是漏掉了把每个处理好的字典保存到结果列表里这关键一步~
核心问题分析
你单独处理单个子列表的逻辑完全没问题,但循环所有子列表时,只是执行了sorted(d.items())却没有将结果存入容器,所以最后无法得到包含所有字典的列表。
正确实现代码
from collections import defaultdict # 你的原始嵌套列表z z = [[(2, 81), (2, 52), (2, 53), (2, 86), (3, 4), (3, 5), (3, 72), (3, 9), (3, 16), (3, 17), (3, 18), (3, 84), (3, 73), (3, 41), (3, 63), (3, 30), (3, 31), (4, 48), (4, 5), (4, 38), (4, 7), (4, 8), (4, 95), (4, 11), (4, 12), (4, 16), (4, 19), (4, 53), (4, 54), (4, 57), (4, 27), (4, 30), (4, 37), (5, 51), (5, 67), (5, 6), (5, 65), (5, 11), (5, 15), (5, 19), (5, 21), (5, 24), (5, 36), (5, 71), (5, 31), (6, 83), (6, 71), (6, 76), (6, 98), (6, 78), (6, 16), (6, 19), (6, 20), (6, 22), (6, 87), (6, 52), (6, 27), (6, 86), (7, 49), (7, 33), (7, 60), (7, 96), (7, 43), (7, 12), (7, 14), (7, 15), (7, 17), (7, 46), (7, 22), (7, 28), (8, 32), (8, 34), (8, 98), (8, 40), (8, 96), (8, 10), (8, 44), (8, 13), (8, 84), (8, 21), (8, 87), (8, 28), (8, 30), (9, 65), (9, 40), (9, 14), (9, 55), (9, 25)], [(2, 32), (2, 3), (2, 39), (2, 8), (2, 9), (2, 10), (2, 43), (2, 13)], [(1, 85), (1, 22), (1, 23), (1, 56), (1, 25), (1, 70), (1, 42)], [(1, 79), (1, 17), (1, 67)], [(1, 54), (1, 6), (1, 7), (1, 92), (1, 10)], [(1, 3), (1, 4)], [(0, 91), (0, 92)], [(0, 88), (0, 89)], [(0, 70), (0, 74), (0, 83)], [(0, 66), (0, 68), (0, 69)], [(0, 26), (0, 29), (0, 33), (0, 35), (0, 38), (0, 41), (0, 45), (0, 50), (0, 51), (0, 55), (0, 57), (0, 59), (0, 65)], [(0, 24)], [(0, 14), (0, 15), (0, 20)],[(0, 13)], [(0, 9), (0, 11)], [(0, 7), (0, 8)], [(0, 5), (0, 6)], [(0, 3), (0, 4)]] # 初始化空列表,用来存放所有处理后的字典 dict_list = [] # 遍历z中的每个子列表 for sublist in z: # 初始化defaultdict用于收集键值对 d = defaultdict(list) for k, v in sublist: d[k].append(v) # 将排序后的键值对转换为普通字典(Python3.7+字典默认保持插入顺序,这里按键排序) sorted_dict = dict(sorted(d.items())) # 将处理好的字典添加到结果列表 dict_list.append(sorted_dict) # 查看结果 print(dict_list)
关键改进点
- 新增了
dict_list空列表,专门用来存储每个子列表处理后的字典 - 去掉了没必要的
numpy.arange,直接遍历z的子列表更简洁直观 - 将
sorted(d.items())转换为字典并添加到结果列表,最终得到你需要的字典列表
内容的提问来源于stack exchange,提问作者Monali
相关产品推荐
相关产品推荐

