【发布时间】: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
【问题讨论】:
-
你似乎从来没有忽略过标点符号?
-
您为什么认为您的实施效率低下?很明显,您会通过
.setdefault、defaultdict和collections.Counter得到答案,但实际上它们都与您的.get做同样的事情。 -
所以也许可以添加一些逻辑来检查单个字符的 dtype,然后构建一个 Counter
-
“低效解决方案”。时间复杂度为O(n)。我觉得还不错。
-
它应该包含 str.count 函数和字典理解。
标签: python python-3.x