如何使用python根据另一个列表获取列表中项目的计数?

时间:2014-06-03 20:38:32

标签: python list count

我想计算列表中的项目。我使用以下内容:

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]

还有其他方法吗?

1 个答案:

答案 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})