如何用Python根据另一个列表统计列表中的项数?
我想要统计一个列表里的项目。我用的是下面的代码:
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 个回答
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})