我想计算列表中的项目。我使用以下内容:
from collections import Counter
list1 = ['a', 'b','a', 'c', 'c', 'a', 'b', 'b']
tally_items = Counter(list1)
但是在列表中可能不会出现我想要的所有独特项目。 例如,list1有'a','b','c',但我想要'a','b','c','d','e'。
我可以使用这样的东西:
list0 = ['a', 'b', 'c', 'd', 'e']
tally_items = [list1.count(i) for i in list0]
还有其他方法吗?
答案 0 :(得分:3)
对于任何未明确存在的密钥,Counter
的实例已经返回0
。所以在上面的例子中:
list1 = ['a', 'b','a', 'c', 'c', 'a', 'b', 'b']
tally_items = Counter(list1)
print tally_items['d'] # prints 0
如果您想明确拥有这些密钥,请创建一个计数器,其中所有密钥都已初始化为0
:
tally_list = Counter()
for key in ['a', 'b', 'c', 'd', 'e']:
tally_list[key] = 0
然后您可以使用实际项目列表进行更新:
tally_list.update(list1)
print tally_list # prints Counter({'a': 3, 'b': 3, 'c': 2, 'e': 0, 'd': 0})