[英]Frequency count of values in a python dict
我有一个 python 字典,我正在尝试计算列出某个值的频率。
我无法导入任何额外的类,因此需要从头开始编写它。 所以我有一个 dict()
1: Dog, 2: Cat, 3: Dog, 4: Elephant
我想返回类似的东西:-
2: Dog, 1: Cat, 1:Elephant
这是我到目前为止所拥有的,但我无法弄清楚如何让计数起作用。 我不断得到
0: Dog, 0: Cat, 0: Elephant
这就是我到目前为止所拥有的,有人可以告诉我我哪里出错了吗?
这显然与我的 count 语句有关(这只是我在网上找到的,但显然不起作用。
我创建了一个空的 dict,然后向它添加值(动物)以及相应的键。 然后我需要遍历所有键中的所有值以返回频率。
输入是一个 dict() 对象,其中包含列出的值 1: Dog, 2: Cat, 3: Dog, 4: Elephant
def frequency(self):
result = set()
for i in self.items:
result.add((self.count(i), self.items[i]))
return sorted(result)
假设您的字典名为d
并且您想要对值进行计数:
from collections import Counter
d = {1: "dog", 2: "cat", 3: "dog", 4: "elephant"}
counts = Counter(d.values())
现在您可以使用counts
计数器:
counts['dog'] # 2
counts['elephant'] # 1
counts['fish'] # 0
如果您必须为此使用自定义代码和类而不是标准库,我认为您的错误在这里:
result.add((self.count(i), self.items[i]))
你可能想要的是:
animal_name = self.items[i] #?
result.add((self.count(animal_name), animal_name))
否则,您可能想与我们分享self.items
...
d = {1:"Dog",2:"Cat", 3:"Dog", 4:"Elephant"}
count = {}
for v in d.values():
if(not(v in count)):
count[v] = 0
count[v] += 1
print(count)
{'狗':2,'猫':1,'大象':1}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.