擅长:python、mysql、java
<p>大小写折叠的简单解决方案通常是只调用字符串上的<code>lower()</code>(或<code>upper()</code>)</p>
<p>我还建议使用<code>collections.Counter</code>而不是构建自己的逻辑来计算字母;它更有效(因为它只在字符串中循环一次,而使用<code>set()</code>和<code>count()</code>的解决方案在每个唯一字母中循环一次,再加上在开始构建集合时循环一次),并且它使代码更简单</p>
<pre><code>>>> s = "YazaAay"
>>> import collections
>>> collections.Counter(s.lower())
Counter({'a': 4, 'y': 2, 'z': 1})
</code></pre>
<p>如果从字典而不是字符串开始,一个选项是将字典转换回带有<code>join()</code>的字符串,然后使用<code>.lower()</code>和<code>Counter</code>应用完全相同的解决方案:</p>
<pre><code>>>> d = {'A': 1, 'z': 1, 'Y': 1, 'a': 3, 'y': 1}
>>> collections.Counter(''.join(k * v for k, v in d.items()).lower())
Counter({'a': 4, 'y': 2, 'z': 1})
</code></pre>