Python不导入外部模块 仅用简单循环查找列表最高频字符串
问题说明
现有元素均为歌手名称字符串的列表,定义如下:singers = ["Abba", "queen", "the black eyed peas", "Abba"]
需要实现:不导入任何外部工具或函数,仅通过简单循环和基础内置方法,打印输出列表中出现次数最多的歌手名称。此前尝试结合count方法编写for循环时,仅能统计得到元素的出现次数,无法关联获取对应的目标歌手字符串。
实现逻辑
核心思路是在遍历统计次数的过程中,同步维护「当前最高出现次数」和「对应歌手名」两个变量,每次统计完单个歌手的出现次数就和历史最高值比对,发现更高值就同步更新两个记录变量,遍历完成后存的歌手名就是目标结果:
- 初始化两个记录变量:
max_count初始值设为0,用来存遍历过程中发现的最高出现次数;top_singer初始值设为空字符串,用来存对应最高次数的歌手名 - 遍历列表中的每一个歌手名称,调用列表内置的
count()方法统计当前歌手在列表中的总出现次数 - 若当前歌手的出现次数大于
max_count存储的历史最高值,就把max_count更新为当前次数,同时把top_singer更新为当前遍历到的歌手名 - 遍历全部结束后,
top_singer存储的就是出现次数最多的歌手名
完整实现代码
singers = ["Abba", "queen", "the black eyed peas", "Abba"] max_count = 0 top_singer = "" for singer in singers: current_count = singers.count(singer) if current_count > max_count: max_count = current_count top_singer = singer print(top_singer)
效果说明
- 上述代码运行后直接输出结果
Abba,和示例列表的预期结果一致 - 全程未使用任何外部导入的工具或函数,仅用到基础for循环、条件判断、列表内置count方法,完全符合要求
- 若列表存在多个歌手出现次数并列第一的场景,当前逻辑会返回列表中最先达到最高出现次数的歌手;如果需要输出所有并列最高的歌手,只需把
top_singer改为列表类型,调整更新逻辑为:次数大于最高值时清空列表存入当前歌手、次数等于最高值时追加当前歌手即可。
内容的提问来源于stack exchange,提问作者Dafi Sultan
相关产品推荐
相关产品推荐

