You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取句子中每个字母的所有出现索引,解决重复字母索引相同问题

问题原因

你的代码输出错误的根源是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:36:03