我有一次大学练习,其中包含一个问题,要求编写一个函数,该函数返回特定键在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”。
答案 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.
希望对您有所帮助。