获取 LARGE 列表中字符串出现频率的最有效方法是什么?

What's the most efficient way to get frequency of occurrence of strings in a LARGE list?

我正在使用 Python 分析国际象棋游戏。目前我有一个 strings 的列表,其中包含约 400,000 个元素。每个元素都是 64 个可能的字符串之一。这是因为每个元素表示棋盘上的一个方格,其中有64个('a1', 'a2', ... , 'h7', 'h8').

查找 64 个元素中的每一个在整个列表中出现了多少次的最有效方法是什么? 我知道对列表进行排序会使这样的任务更快,但是由于我处理的是字符串而不是整数,所以我不确定我是否可以对它们进行排序。我不介意使用外部模块,但我在这里寻找最原始和pythonic的方式。

非常感谢任何帮助!

只需导入 collections.Counter 并将列表传递给它就可以了。

>>> from collections import Counter
>>> li = ['a1', 'b1', 'a1', 'c3', 'a1', 'b1', 'd5']
>>> Counter(li)
Counter({'a1': 3, 'b1': 2, 'c3': 1, 'd5': 1})