python dict中值的频率计数

时间:2019-03-17 13:12:25

标签: python dictionary for-loop count

我有一个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

2 个答案:

答案 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}