繁体   English   中英

python dict中值的频率计数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM