Python统计嵌套子列表0和1频次并追加到字典时出错如何解决
问题原因
你的第二版代码存在两处逻辑错误:
list_counts.append(counts_each)的缩进错误,放在了遍历元素的内层循环中,每统计1个元素就往结果列表追加1次字典,4个长度为10的子列表最终会产生40条冗余数据- 字典是Python中的可变对象,同一个
counts_each实例的修改会同步到所有已经追加到列表的引用上,所以同一子列表对应的所有重复追加的字典最终都显示为该子列表统计完成的最终值
修复方案
将append操作移到外层循环,单个子列表全部元素统计完成后再追加到结果列表:
list_counts = [] for i in range(4): counts_each = dict() for k in list_of_lists[i]: counts_each[k] = counts_each.get(k, 0) + 1 list_counts.append(counts_each) print(list_counts)
输出结果
[{1: 7, 0: 3}, {0: 10}, {1: 10}, {0: 3, 1: 7}]
内容的提问来源于stack exchange,提问作者bapors
相关产品推荐
相关产品推荐

