如何获取句子中每个字母的所有出现索引,解决重复字母索引相同问题
问题原因
你的代码输出错误的根源是str.index()方法的特性:该方法只会返回指定字符在字符串中第一次出现的下标,因此遇到重复字符时永远返回首个匹配位置的索引,无法拿到后续出现位置的下标。
你想要的功能完全可以用字典实现,具体修改思路和代码如下:
实现思路
- 用字典存储最终结果,键为出现的字母,值为该字母所有出现位置的索引列表
- 遍历字符串时使用
enumerate()方法同时获取下标和对应字符,避免手动查找索引 - 遇到非空格字符时:如果字符已在字典中,就将当前下标追加到对应列表;如果不在字典中,就以该字符为键、当前下标组成的列表为值新增键值对
可运行代码
def counting(sentence): index_map = {} for idx, char in enumerate(sentence): # 跳过空格 if char == " ": continue if char in index_map: index_map[char].append(idx) else: index_map[char] = [idx] return index_map # 调用测试 result = counting("Hello my friends") # 按需要的格式打印输出 for letter, idx_list in result.items(): print(f"{letter} : {idx_list}", end=" ")
运行后输出结果为:H : [0] e : [1, 12] l : [2, 3] o : [4] m : [6] y : [7] f : [9] r : [10] i : [11] n : [13] d : [14] s : [15]
完全符合你预期的每个字母对应所有出现位置索引的需求。
内容的提问来源于stack exchange,提问作者Learningmachine
相关产品推荐
相关产品推荐

