Python实现姓名列表拆分统计名字出现次数并返回字典的问题排查
错误原因
- 第一层遍历姓名列表的循环中,
new_name变量每次都会被新值覆盖,循环结束后仅保留了列表最后一个姓名的名Maren,此前所有姓名的名都没有被记录 - 额外增加的第二层遍历逻辑完全多余,遍历字符串类型的
new_name会逐个访问字符,同时计数逻辑里判断条件用的是first_name,赋值用的是new_name,逻辑完全错位
修正后完整代码
# 编写名为name_counts的函数,入参是完整姓名组成的列表 # 每个姓名都是空格分隔的两个词,示例:"David Joyner" # 函数返回字典:键为列表里的所有名,值为对应名的出现次数 # 提示:使用split()方法拆分姓名得到名和姓 def name_counts(name_list): name_dict = {} for name in name_list: first_name = name.split()[0] if first_name in name_dict: name_dict[first_name] += 1 else: name_dict[first_name] = 1 return name_dict # 下方是测试代码,可修改变量值测试不同输入场景 # 函数正常运行的原始输出如下(键的顺序可能不同): # {'Shelba': 5, 'Maren': 1, 'Nicol': 1, 'David': 2, 'Brenton': 2} name_list = ["David Joyner", "David Zuber", "Brenton Joyner", "Brenton Zuber", "Nicol Barthel", "Shelba Barthel", "Shelba Crowley", "Shelba Fernald", "Shelba Odle", "Shelba Fry", "Maren Fry"] print(name_counts(name_list))
内容的提问来源于stack exchange,提问作者H20zzz
相关产品推荐
相关产品推荐

