如何列出排除字典中的键数

2024-10-16 17:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

对“total”输出感兴趣,以反映与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

Tags: keyif语句keys条件感兴趣total计数
2条回答

您声明的词典是按顺序“分配”的。当使用新值重用键时,python interpeter会删除该键的旧值,并用新值替换它。因此,不能将相同的值映射到两个键。不过,defaultdict可以帮助您解决两个关键场景。在这种情况下,使用set获取唯一可识别的密钥并标记重复项。既然如此,哪一个是真实的,哪一个是重复的,完全可以解释了

这里,默认dict的工厂是list,其中的值创建为list

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']}

看看您的代码示例,您似乎在筛选列表时遇到了麻烦。如果您真的要寻找重复的密钥,那么这将是一个漫长的搜索:)

您可以按如下方式筛选具有dict理解的dict:

filtered_dict = {k: v for k, v in d.items() if k != 2}

然后您可以调用len()来获取唯一键的数量。不可能在dict中使用双键

d = {1:0.3246, 2:3.222, 3:3344, 2:0.3444, 5:1.09, 6:222.3}
print(len(d))  #  = 5, duplicate keys are void

filtered_dict = {k: v for k, v in d.items() if k != 2}
print(len(filtered_dict))  #  = 4, since key 2 is dropped.


相关问题 更多 >