在python中检测重复键

时间:2019-06-25 04:17:14

标签: python

我有一次大学练习,其中包含一个问题,要求编写一个函数,该函数返回特定键在python对象中重复多少次。在研究字典后,我知道python自动忽略重复键,只保留最后一个。我试图以常规方式遍历每个键:

dictt = {'a' : 22, 'a' : 33, 'c' : 34, 'd' : 456}
lookFor = 'a'
times = 0
for k,v in dictt.items():
      if k == lookFor:
          times = times + 1 

这将返回1。即使我检查字典的长度,它也会显示3,这意味着只计算了一个键“ a”。

3 个答案:

答案 0 :(得分:0)

根据定义,词典没有重复的键。阅读docs。尝试使用与现有项目相同的密钥添加新项目,将覆盖较早的项目。尝试打印字典中的项目:

dictt = {'a' : 22, 'a' : 33, 'c' : 34, 'd' : 456}
for x, y in dictt.items():
  print(x, y)

输出:

a 33
c 34
d 456

答案 1 :(得分:0)

不能。 Python字典不支持重复键,它将被重写。

但是您可以为其创建新的数据类型。

class Dictlist(dict):
    def __setitem__(self, key, value):
        try:
            self[key]
        except KeyError:
            super(Dictlist, self).__setitem__(key, [])
        self[key].append(value)

示例用法

>>> d = dictlist.Dictlist()
>>> d['test'] = 1
>>> d['test'] = 2
>>> d['test'] = 3
>>> d
{'test': [1, 2, 3]}
>>> d['other'] = 100
>>> d
{'test': [1, 2, 3], 'other': [100]}

使用Dictlist数据类型回答您的问题

dictt = dictlist.Dictlist()
dictt['a'] = 22
dictt['a'] = 33
dictt['c'] = 34
dictt['d'] = 456
lookFor = 'a'
len(dictt['a']) 

答案 2 :(得分:0)

字典不包含重复的键。最后输入的key将由字典存储。

dictt = {'a' : 22, 'a' : 33, 'c' : 34, 'd' : 456}
# This is your dictionary.
# Now print the dictionary to see it.
print(dictt)

输出:-

{'a': 33, 'c': 34, 'd': 456} 
# Now this is your dictionary. Now on whatever the operation you will perform, you are perfroming on this dictionary.

希望对您有所帮助。