首页 > 解决方案 > 如何列出具有排除项的字典中的键数

问题描述

对“总”输出感兴趣,以反映与 if 语句中的条件匹配的新键的计数。如果您还能够提供有关如何显示由于 if 语句而没有返回多少键的说明,那将很有帮助。

d = {1:0.3246, 2:3.222, 3:3344, 2:0.3444, 5:1.09, 6:222.3}


for key in list(d)[:4]:
    if key == 2:
        continue
    print(key, d[key])
keyresults = key
print('Total unique keys found:', keyresults)

预期成绩:

1 0.3246
3 3344
5 1.09
Total unique keys found: 3
Total unique keys not found: 2

实际结果:

1 0.3246
3 3344
5 1.09
Total unique keys found: 5

标签: pythonloopsif-statement

解决方案


您声明的字典是按顺序“分配”的。当该键被新值重用时,python解释器会删除该键的旧值并用新值替换它。因此,您不能将相同的值映射到两个键。但是,defaultdict 可以帮助您处理两个关键场景。在这种情况下,用于set获取唯一可识别的键并标记重复项。现在,话虽如此,哪一个是真实的,哪一个是重复的,完全有待解释。

在这里,default-dict 的工厂是列表,其中值被创建为列表。

from collections import defaultdict
d=defaultdict(list)
for k,v in l:
      d[k].append(v)
dict(d)
{1: [111, 'aaa'], 2: [222, 'bbb'], 3: [333, 'ccc']}

推荐阅读