Python中如何为重复单词分配不同索引并精准定位其位置
发布时间 - 2025-12-30 00:00:00 点击率:次本文讲解如何在python中正确识别同一字符串中重复单词的多个出现位置,解决`list.index()`仅返回首次匹配索引导致无法区分同词多实例的问题,并提供基于`enumerate`和字典映射的高效解决方案。
在字符串处理中,一个常见误区是误用 list.index(value) 来定位重复元素——该方法永远只返回目标值第一次出现的索引,因此当对包含多个 "hello" 的列表反复调用 x.index("hello") 时,结果恒为 1(假设首次出现在索引1),导致 x.index(i) != x.index(j) 判断始终为 False,循环无输出。
根本原因在于:index() 是查找行为,而非位置绑定;它不感知当前遍历上下文,也无法反映“第几次出现”。要真正区分同词的不同实例,必须显式记录每个单词在原始序列中的实际位置。
推荐做法是使用 enumerate() 遍历分词结果,将单词作为键、其所有索引构成的列表作为值,构建位置映射字典:
s = "The hello hello substring string of this pan is amazing hello"
words = s.split()
# 构建 {word: [index1, index2, ...]} 字典
position_map = {}
for idx, word in enumerate(words):
if word not in position_map:
position_map[word] = []
position_map[word].append(idx)
# 输出所有出现次数 ≥2 的单词及其全部索引(按题意格式)
for word, indices in position_map.items():
if len(indices) > 1:
# 格式化为 "hello,1,hello,2,hello,10"
parts = [f"{word},{i}" for i in indices]
print(",".join(parts))✅ 输出:
hello,1,hello,2,hello,10
? 关键优势:
- enumerate() 提供稳定、唯一、与遍历顺序严格对应的索引,彻底规避 index() 的歧义;
- 字典值为 list,天然支持追加多个位置,保留全部上下文;
- 时间复杂度 O(n),远优于嵌套循环 + 多次 index() 查找(O(n²));
- 可轻松扩展:支持统计频次、提取上下文、去重保留首/末次等高级操作。
⚠️
注意事项:
- 原问题中 input 被用作变量名,应避免覆盖内置函数 input(),建议改用 text 或 s;
- 若需区分大小写或处理标点,应在 split() 前统一预处理(如 re.split(r'\W+', s.lower()));
- 此方案天然支持 Unicode 和中文分词(需配合 jieba 等工具做语义切分)。
综上,放弃依赖 index() 进行动态位置判断,转而采用 enumerate + dict 的主动索引采集模式,是处理重复元素定位问题的健壮、清晰且可扩展的标准实践。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建高效可靠的建站解决方案?
如何在万网自助建站平台快速创建网站?
如何彻底卸载建站之星软件?
网易LOFTER官网链接 老福特网页版登录地址
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何处理异常和错误?(Handler示例)
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Android滚轮选择时间控件使用详解
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
详解Android图表 MPAndroidChart折线图
如何在香港免费服务器上快速搭建网站?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何正确下载安装西数主机建站助手?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
微信小程序制作网站有哪些,微信小程序需要做网站吗?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Swift开发中switch语句值绑定模式
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Swift中switch语句区间和元组模式匹配
Laravel如何使用Livewire构建动态组件?(入门代码)
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何快速搭建高效WAP手机网站?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
中山网站制作网页,中山新生登记系统登记流程?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
lovemo网页版地址 lovemo官网手机登录
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
长沙做网站要多少钱,长沙国安网络怎么样?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
EditPlus 正则表达式 实战(3)
教你用AI将一段旋律扩展成一首完整的曲子
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤

