我看了又看,但找不到我问题的答案。我如何组合字典键,忽略它们的大小写。 比如说我有一本这样的字典
dict = {'a':1,'A',2}
忽略大小写,这两个键是相同的字母表。因此,我希望将它们结合起来,最终得到一本类似这样的词典
dict = {'a':3}
输出键的情况无关紧要
目前我的代码是这样的
s = "YazaAay"
freq = {i : s.count(i) for i in set(s)}
这将给我带来回报
{'A': 1, 'z': 1, 'Y': 1, 'a': 3, 'y': 1}
我想要的输出是这样的
{'a':4,'z':1,'y':2}
#案例和订单都无关紧要
在您的示例中,预先降低字符串可以避免您的问题
在更一般的情况下,如果您已经有一个大小写混合的dict,您可以使用defaultdict重建:
那会给你什么
大小写折叠的简单解决方案通常是只调用字符串上的
lower()
(或upper()
)我还建议使用
collections.Counter
而不是构建自己的逻辑来计算字母;它更有效(因为它只在字符串中循环一次,而使用set()
和count()
的解决方案在每个唯一字母中循环一次,再加上在开始构建集合时循环一次),并且它使代码更简单如果从字典而不是字符串开始,一个选项是将字典转换回带有
join()
的字符串,然后使用.lower()
和Counter
应用完全相同的解决方案:这里有一个不使用导入的解决方案
输出:
相关问题 更多 >
编程相关推荐