Python中从布尔值列表迭代更新字典及构建嵌套字典的问题
问题修复与实现方案
原代码的问题
- 语法错误:
my_dict.update('result': result[-1])写法完全不对——update()要么传字典(比如{'key': val}),要么用关键字参数;而且result是布尔值,根本没有[-1]这种索引,运行会直接报错。 - 值被覆盖:就算语法改对了,每次都更新同一个键,之前的值会被覆盖,最后自然只剩一个键值对。
实现两层嵌套字典的方法
你要的是外层用True和False当键的两层字典,分两种常用场景给你代码:
场景1:收集每个结果的相关数据(比如索引)
如果需要记录每次迭代的结果对应的位置或其他数据:
my_dict = {True: [], False: []} results = [True, True, False, True] # 用enumerate拿到索引和结果 for idx, res in enumerate(results): # 把索引加到对应布尔值的列表里,也可以换成你实际需要存储的内容 my_dict[res].append(idx) print(my_dict) # 输出:{True: [0, 1, 3], False: [2]}
场景2:统计True/False的出现次数
如果只是要统计两种结果的数量:
my_dict = {True: 0, False: 0} results = [True, True, False, True] for res in results: my_dict[res] += 1 print(my_dict) # 输出:{True: 3, False: 1}
额外:动态适配结果类型(如果结果不止True/False)
如果不确定结果只有这两个值,可以动态创建外层键:
my_dict = {} results = [True, True, False, True] for res in results: # 如果键不存在就初始化一个空列表 if res not in my_dict: my_dict[res] = [] my_dict[res].append(res) # 替换成你要存的内容就行 print(my_dict) # 输出:{True: [True, True, True], False: [False]}
内容的提问来源于stack exchange,提问作者n3wb
相关产品推荐
相关产品推荐

