如何计算一个键的每个值出现的次数?

2024-06-09 05:54:30 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,如果我有一本列出农场动物的字典,它将如下所示:

{"groupA":["cow","lamb","lamb","lamb"], "groupB":["cow","cow"]}

如何计算每个值在相应键中出现的次数?我要一组牛,三组羔羊,二组牛。更棘手的是字典不是固定的,它需要动态的。可能有更多的键在groupB(例如groupC,groupd)上,并且可能有或多或少的值与之相关。我已经找到了一种静态的方法,通过弹出每个键,然后使用if函数查看其中包含的内容,然后在其中放置一个计数器。(只有两种动物不是牛就是羔羊)。不幸的是,我无法确定如何动态地执行此操作,因为我永远不知道将有多少个键。非常感谢你们的帮助。我在任何地方都找不到答案,此刻我非常沮丧。在


Tags: 方法字典静态动态次数农场动物cow
3条回答

我认为规范的方法是使用collections.Counter

>>> from collections import Counter
>>> d = {"groupA":["cow","lamb","lamb","lamb"], "groupB":["cow","cow"]}
>>> dc = {k: Counter(v) for k,v in d.items()}
>>> dc
{'groupA': Counter({'lamb': 3, 'cow': 1}), 'groupB': Counter({'cow': 2})}

之后,您可以访问嵌套计数:

^{pr2}$

另一个使用Counter的iter解释

>>> from collections import Counter
>>> D = {"groupA":["cow","lamb","lamb","lamb"], "groupB":["cow","cow"]}
>>> Counter((k,v) for k in D for v in D[k])
Counter({('groupA', 'lamb'): 3, ('groupB', 'cow'): 2, ('groupA', 'cow'): 1})

如果您需要dict

^{pr2}$

list

^{3}$

您可以先用如下函数计算列表中每一项的数量:

def countList(list):
    counts = {}
    for l in list:
        if l in counts:
            counts[l] += 1
        else:
            counts[l] = 1
    return counts

相关问题 更多 >