如何用dict.get()替代if语句实现字典字符计数功能?
用dict.get()替代条件语句实现字符出现次数统计
原需求是用
d.get()替代以下histogram(s)函数中的if语句,实现字符串中字符出现次数的统计:
def histogram(s): d = dict() for c in s: if c not in d: d[c] = 1 else: d[c] += 1 return d print(histogram('happy'))
尝试的代码仅能将每个字符对应的值设为1,无法实现累加功能:
def ordered_items(s): d = dict() for c in s: d[c] = 1 d.get(c, 0) return d print(ordered_items('happy'))
正确实现方式
利用d.get()获取键的当前值(不存在则返回默认值0),在此基础上加1后重新赋值给对应键,即可实现累加计数,替代原有的if-else逻辑:
def histogram(s): d = dict() for c in s: d[c] = d.get(c, 0) + 1 return d print(histogram('happy')) # 输出: {'h': 1, 'a': 1, 'p': 2, 'y': 1}
逻辑说明
d.get(c, 0):若键c已在字典d中,返回其对应数值;若不存在,返回默认值0。- 每次循环将获取到的值加1,再赋值给
d[c],无论键是否存在,都能完成计数累加,完全替代了原条件判断的逻辑。
内容的提问来源于stack exchange,提问作者Gabriel Radich
相关产品推荐
相关产品推荐

