如何修改Python姓名统计代码以仅统计名字?
如何修改代码统计列表中名字(First Name)的出现次数?
你碰到的属性错误很好解决——问题出在调用split()的对象错了!name_list是列表类型,而split()是字符串专属方法,不能直接用在列表上。你需要对列表里的每一个全名(也就是每个字符串元素)单独拆分,提取出名字部分。
另外还要提醒你一个小疏漏:原来的函数没有return语句,所以调用print(name_counts(name_list))时最后会输出None,这肯定不是你想要的结果,得把这个也补上。
下面是修正后的完整代码:
def name_counts(name_list): name_dict = {} for full_name in name_list: # 拆分全名,取第一个部分作为名字(默认按空格分隔) first_name = full_name.split()[0] # 更新计数逻辑 if first_name in name_dict: name_dict[first_name] += 1 else: name_dict[first_name] = 1 # 必须返回统计好的字典 return name_dict # 举个测试例子 test_names = ["John Doe", "Jane Smith", "John Connor", "Alice Brown", "Jane Doe"] print(name_counts(test_names)) # 输出:{'John': 2, 'Jane': 2, 'Alice': 1}
关键细节说明:
- 每次循环处理一个全名(比如
"John Doe"),调用split()会把它拆成["John", "Doe"],取索引0的元素就是名字 - 如果遇到带中间名的全名(比如
"Mary Ann Taylor"),split()[0]依然能正确提取第一个名字,符合统计需求 - 如果你的名字格式有特殊情况(比如带连字符的名字
"Jean-Luc Picard"),full_name.split()[0]也能拿到"Jean-Luc",这个可以根据你的实际需求微调拆分逻辑
内容的提问来源于stack exchange,提问作者user9660128
相关产品推荐
相关产品推荐

