【发布时间】:2021-11-01 16:36:41
【问题描述】:
给定下一个单词:
ABCABACBABACACBACBAC
使用python计算单词中出现的字母最有效的方法是什么?
(解:A:8、B:6、C:6)
【问题讨论】:
-
collections.Counter(word)
给定下一个单词:
ABCABACBABACACBACBAC
使用python计算单词中出现的字母最有效的方法是什么?
(解:A:8、B:6、C:6)
【问题讨论】:
不要重新发明轮子 - 只需使用 Counter:
from collections import Counter
result = Counter('ABCABACBABACACBACBAC')
【讨论】:
你可以这样解决:
>>> def counter(in_str):
... out_dict = dict()
... for char in in_str:
... if char in out_dict:
... out_dict[char] += 1
... else:
... out_dict[char] = 1
... return out_dict
...
>>> counter("ABCABACBABACACBACBAC")
{'A': 8, 'B': 6, 'C': 6}
>>>
如果你想尝试一下如何实现。
【讨论】:
out_dict[char] = out_dict.get(char, 0) + 1 来避免if/else。但是已经有collections.Counter,dict 的子类,它可以完成所有这些并且可能更加优化,因此无需实现自己的功能。