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

如何在Python中将字符串中元素的所有位置存储到字典中?

字符串字符所有索引存储到字典的解决方法

你原来用字典推导式的问题在于:字典的键是唯一的,当同一个字符多次出现时,后面的索引会覆盖前面的,最后只能保留每个字符的最后一个位置。要存储所有索引,得让每个键对应一个集合(或列表)来存多个位置值。

方法1:手动初始化字典

string = "This is an example"
test = {}
for pos, letter in enumerate(string):
    # 字符不在字典里就先创建一个空集合
    if letter not in test:
        test[letter] = set()
    # 把当前索引添加到对应字符的集合中
    test[letter].add(pos)

测试效果:

print(test["a"])  # 输出 {8, 13}

方法2:用collections.defaultdict简化代码

如果不想每次判断字符是否存在,可以用collections模块的defaultdict,它会自动为不存在的键初始化指定类型的容器:

from collections import defaultdict

string = "This is an example"
test = defaultdict(set)
for pos, letter in enumerate(string):
    test[letter].add(pos)

# 需要转为普通字典的话直接转换即可
test = dict(test)

这样就能实现需求,每个字符对应的所有索引都会被完整保存。

内容的提问来源于stack exchange,提问作者pythonR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:01:12