我正在尝试获取列表列表中的项目计数,并将这些计数添加到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还是很陌生,但是没有一个问题能够真正解决我所需要的足够的知识。非常感谢。
使用aCounter而不是普通的dict来计算事物:
Counter
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))
如您所见,这使您的代码 大大 简化了。