如何统计字典排除指定键后的有效键数量及未统计键数量
解决统计符合条件的键与被跳过键数量的问题
我来帮你搞定这个统计问题~先拆解一下原代码里的问题,再给出修正方案:
原代码的核心问题
- 字典键的唯一性:你定义的字典里有重复的键
2,Python字典会自动保留最后一个对应的值,所以实际生效的字典是{1:0.3246, 2:0.3444, 3:3344, 5:1.09, 6:222.3},前4个键为[1,2,3,5]。 - 统计逻辑错误:你用
keyresults = key最后拿到的只是循环最后一次迭代的键(也就是5),根本没有实现数量统计的逻辑,这就是实际结果总数不对的原因。
修正后的代码
我们可以通过两个计数器,分别统计符合条件输出的键数量和因if语句被跳过的键数量:
d = {1:0.3246, 2:3.222, 3:3344, 2:0.3444, 5:1.09, 6:222.3} # 初始化计数器:统计输出的键、被if语句跳过的键 found_count = 0 skipped_count = 0 # 遍历字典的前4个键(去重后实际键列表是[1,2,3,5,6],前4个为1,2,3,5) for key in list(d)[:4]: if key == 2: skipped_count += 1 continue print(key, d[key]) found_count += 1 print(f'Total unique keys found: {found_count}') print(f'Total unique keys skipped by if statement: {skipped_count}')
运行结果
1 0.3246 3 3344 5 1.09 Total unique keys found: 3 Total unique keys skipped by if statement: 1
补充:如果要统计「所有未输出的键」(含循环未遍历到的)
如果你想统计整个字典里没被输出的键(比如例子中的2和6),可以基于总键数计算:
total_keys = len(d) not_found_count = total_keys - found_count print(f'Total unique keys not found (in entire dict): {not_found_count}')
添加这段代码后会额外输出:
Total unique keys not found (in entire dict): 2
刚好和你的预期一致~
内容的提问来源于stack exchange,提问作者Williamct
相关产品推荐
相关产品推荐

