【问题标题】:What's the most efficient way to get frequency of occurrence of strings in a LARGE list?获取 LARGE 列表中字符串出现频率的最有效方法是什么?
【发布时间】:2021-02-04 18:34:04
【问题描述】:

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

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

非常感谢任何帮助!

【问题讨论】:

    标签: python optimization time-complexity data-science chess


    【解决方案1】:

    只需导入 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})
    

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 1970-01-01
      • 2021-10-10
      • 2011-10-08
      • 2013-09-10
      • 1970-01-01
      • 2010-11-21
      • 2019-07-16
      • 1970-01-01
      相关资源
      最近更新 更多