我使用Python集合中的defaultdict:
from collections import defaultdict
data = defaultdict(list)
在字典里我有一组键/列表。示例:
{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循环。谢谢!
发布于 2022-06-09 07:39:47
试试这个:
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})
发布于 2022-06-09 07:36:55
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
发布于 2022-06-09 07:37:56
>>> 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})
您必须将您的列表转换为元组,因为计数器不能计数不可更改的(可变)类型。
https://stackoverflow.com/questions/72556267
复制相似问题