对“总计”输出感兴趣,以反映与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
答案 0 :(得分:0)
您声明的字典是顺序“分配的”。等到密钥以新值重用时,python交错器会删除该密钥的旧值,并将其替换为新值。因此,您不能将相同的值映射到两个键。但是,defaultdict可以帮助您解决两个关键问题。在这种情况下,使用set
获取唯一可标识的密钥并标记重复项。话虽这么说,哪个是实际的,哪个是重复的,完全可以解释。
在这里,默认字典的工厂是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']}
答案 1 :(得分:-1)
看看您的代码示例,您似乎在过滤列表方面遇到麻烦。如果您真的在寻找重复的键,那将是一个漫长的搜索:)
您可以使用dict-comprehension过滤dict,如下所示:
filtered_dict = {k: v for k, v in d.items() if k != 2}
然后,您只需拨打len()
即可获得唯一键的数量。字典中不能使用双键。
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.