如何用Python根据另一个列表统计列表中的项数?

1 投票
1 回答
658 浏览
提问于 2025-04-18 08:28

我想要统计一个列表里的项目。我用的是下面的代码:

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

撰写回答