【问题标题】:Chars-Counter Python [duplicate]字符计数器 Python [重复]
【发布时间】:2020-07-27 02:27:34
【问题描述】:

我正在寻找解决方案:

输入是一个类似s = "Hello World!"的字符串
该函数应返回一个字典,如:
{'e': 1, 'H': 1, 'r': 1, 'o': 2, 'd': 1, ' ': 1, 'l': 3, 'W': 1}

我刚刚用get 得到了一个低效的解决方案:

def char_count_dict(count_string):
     letter_dict = {}
     for letter in count_string:
         letter_dict[letter] = letter_dict.get(letter, 0)+1
     return letter_dict

【问题讨论】:

  • 你似乎从来没有忽略过标点符号?
  • 您为什么认为您的实施效率低下?很明显,您会通过 .setdefaultdefaultdictcollections.Counter 得到答案,但实际上它们都与您的 .get 做同样的事情。
  • 所以也许可以添加一些逻辑来检查单个字符的 dtype,然后构建一个 Counter
  • “低效解决方案”。时间复杂度为O(n)。我觉得还不错。
  • 它应该包含 str.count 函数和字典理解。

标签: python python-3.x


【解决方案1】:

您可以使用高性能容器数据类型,例如 collections.Counter https://docs.python.org/2/library/collections.html#collections.Counter

from collections import Counter

def char_count_dict(count_string):
    return dict(Counter(count_string))

【讨论】:

  • 它应该包含 str.count 函数和字典理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多