实现字符串列表频次统计字典遇困,求技术指导
问题描述
给定一个字符串列表,创建一个字典,其中键为字符串,值为对应字符串在列表中的重复次数,禁止使用额外库。
示例
>>> problem1(['Hello', 'Hello', 'Friends', 'Friends', 'Friends', 'Home']) {'Hello': 2, 'Friends': 3, 'Home': 1}
我的尝试代码
def problem2(mystrings): mydct = {} for x in mystrings: mydct = [mystrings] for in mydct: return mydct print (problem2(['Hello', 'Hello', 'Friends', 'Friends', 'Friends', 'Home']))
我无法实现将字符串作为字典键、其出现次数作为对应值的功能,恳请提供实现指导。
解决方案
你的代码逻辑存在核心问题:循环中错误地将字典重赋值为包含原列表的列表,后续循环还存在语法错误(缺失循环变量),直接返回了错误的结构。要实现统计功能,核心是遍历列表时更新字典的计数,以下是两种可行实现:
方法一:基础条件判断统计
def problem2(mystrings): count_dict = {} for s in mystrings: # 若字符串已在字典中,计数加1;否则初始化为1 if s in count_dict: count_dict[s] += 1 else: count_dict[s] = 1 return count_dict print(problem2(['Hello', 'Hello', 'Friends', 'Friends', 'Friends', 'Home']))
方法二:用dict.get()简化代码
利用字典的get()方法可以省去条件判断,该方法会返回键对应的值,若键不存在则返回指定默认值:
def problem2(mystrings): count_dict = {} for s in mystrings: count_dict[s] = count_dict.get(s, 0) + 1 return count_dict
两种方法都能正确输出目标结果:{'Hello': 2, 'Friends': 3, 'Home': 1},完全符合需求且无需额外库。
内容的提问来源于stack exchange,提问作者XMP_BoZo
相关产品推荐
相关产品推荐

