python - 尝试通过计算列表列表中的出现次数来添加到字典值中(Python)

标签 python list dictionary count iteration

我正在尝试获取列表列表中项目的计数,并将这些计数添加到 Python 字典中。我已经成功地制作了列表(它是单个广告查看记录的所有可能出现组合的列表)和一个字典,其键等于所有可能出现的值,现在我需要计算每次出现和更改的次数字典中的值到列表列表中相应键的计数。这是我拥有的:

import itertools
stuff=(1,2,3,4)
n=1
combs=list()
while n<=len(stuff):
    combs.append(list(itertools.combinations(stuff,n)))
    n = n+1
viewers=((1,3,4),(1,2,4),(1,4),(1,2),(1,4)) 
recs=list()
h=1
while h<=len(viewers):
    j=1
    while j<=len(viewers[h-1]):
       recs.append(list(itertools.combinations(viewers[h-1],j))) 
       j=j+1
    h=h+1
showcount={}
for list in combs:
    for item in list:
        showcount[item]=0    
for k, v in showcount:
        for item in recs:
            for item in item:
                if item == k:
                    v = v+1

我已经尝试了很多不同的方法来做到这一点,但我通常要么得到“太多的值无法解压”错误,要么根本就没有填充。发布了几个类似的问题,但我是 Python 的新手,没有一个真正解决了我需要的问题,足以让我弄清楚。非常感谢。

最佳答案

使用 Counter而不是普通的 dict 来计算事物:

from collections import Counter

showcount = Counter()
for item in recs:
    showcount.update(item)

甚至:

from collections import Counter
from itertools import chain

showcount = Counter(chain.from_iterable(recs))

如您所见,这使您的代码大大更简单。

关于python - 尝试通过计算列表列表中的出现次数来添加到字典值中(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12900444/

相关文章:

java - 参数化接口(interface)可以是子接口(interface)吗?

python - 在 python3 中,如何在特定位置拆分列表列表?

python - 重新组合或重新组织字典中的键?

swift - NSKeyedUnarchiver.unarchivedObject 为字典返回 nil

python - 字典键和值的笛卡尔积 Python

python - 如何从 vcrpy 二进制响应字符串中提取未压缩的文本?

python - Django : Table doesn't exist

python - 在 Python 中对函数求导

python - werkzeug generate_password_hash,有什么意义吗?

Javascript函数推送问题