我有一个python字典,我想算出列出值的频率。
我无法导入任何其他类,因此有效地需要从头开始编写它。 所以我的dict()是
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.1-jre</version>
</dependency>
我想返回类似的内容:-
1: Dog, 2: Cat, 3: Dog, 4: Elephant
这是我到目前为止所拥有的,但是我无法弄清楚如何使工作发挥作用。我不断得到
2: Dog, 1: Cat, 1:Elephant
这是我到目前为止的情况,请您告诉我我要去哪里错了?
这显然与我的count语句有关(这只是我在网上找到的,但显然不起作用。
我创建一个空的dict,然后向其中添加值(动物)以及相应的键。然后,我需要遍历所有键中的所有值以返回频率。
输入是一个dict()对象,其中包含列出的值:1:狗,2:猫,3:狗,4:大象
0: Dog, 0: Cat, 0: Elephant
答案 0 :(得分:0)
假设您的字典名为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
中的内容...
答案 1 :(得分:0)
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)
{'Dog':2,'Cat':1,'Elephant':1}