首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:如何在字典中聚合和计数相同的值

Python:如何在字典中聚合和计数相同的值
EN

Stack Overflow用户
提问于 2022-06-09 07:27:24
回答 3查看 58关注 0票数 0

我使用Python集合中的defaultdict:

代码语言:javascript
运行
复制
from collections import defaultdict
data = defaultdict(list)

在字典里我有一组键/列表。示例:

代码语言:javascript
运行
复制
{1: [1, 6, 3, 4, 5], 2: [1, 3, 2, 4, 5], 3: [1, 6, 3, 4, 5]})

我正在寻找一种方法来统计每个列表(相同的顺序和内容)在字典中的次数。基本上,我需要用一个计数器来汇总每个列表。例如,组合1,6,3,4,5被发现2次。是否有任何助手类/函数可以这样做?除此之外,我只会在字典中创建一个双for循环。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-09 07:39:47

试试这个:

代码语言:javascript
运行
复制
from collections import Counter
data = defaultdict(list, {1: [1, 6, 3, 4, 5], 2: [1, 3, 2, 4, 5], 3: [1, 6, 3, 4, 5]})
c = Counter(map(tuple, data.values()))

print(c)

Counter({(1, 6, 3, 4, 5): 2, (1, 3, 2, 4, 5): 1})
票数 1
EN

Stack Overflow用户

发布于 2022-06-09 07:36:55

代码语言:javascript
运行
复制
H = {1: [1, 6, 3, 4, 5], 2: [1, 3, 2, 4, 5], 3: [1, 6, 3, 4, 5]}
occurences = dict()
for i in H.keys() :
    k = 0
    for j in H.keys():
        if H[j] == H[i] :
            k += 1 
    if i not in occurences.keys():
        occurences[i] = k
票数 1
EN

Stack Overflow用户

发布于 2022-06-09 07:37:56

使用collections.Counter

代码语言:javascript
运行
复制
>>> from collections import Counter
>>> d = {1: [1, 6, 3, 4, 5], 2: [1, 3, 2, 4, 5], 3: [1, 6, 3, 4, 5]}
>>> print(Counter(tuple(l) for l in d.values())
Counter({(1, 6, 3, 4, 5): 2, (1, 3, 2, 4, 5): 1})

您必须将您的列表转换为元组,因为计数器不能计数不可更改的(可变)类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72556267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档