python - 计算子串计数
问题描述
假设我有一个字符串aaa
,并且我想要 this 中所有子字符串的计数aaa
。我通过以下代码做到这一点:
如果我使用以下代码:
s="aaa"
res = [s[i: j] for i in range(len(s))for j in range(i + 1, len(s) + 1)]
d={}
for i in res:
if i not in d.keys():
d[i]=s.count(i)
print(d)
我得到输出:
{'a': 3, 'aa': 1, 'aaa': 1}
但是根据我的需要,我希望计数为aa
两个,因为有一次我可以aa
从两个位置中选择,即aa
froms[0:2]
和 other from s[2:4]
。
如果我像下面这样修改我的代码,我会得到想要的结果,aa
但现在的计数a
是错误的。
s="aaa"
res = [s[i: j] for i in range(len(s))for j in range(i + 1, len(s) + 1)]
d={}
for i in res:
if i not in d.keys():
d[i]=0
for j in range(len(s)+1):
d[i]+=s[:j].count(i)
print(d)
我得到以下错误的输出:
{'a': 6, 'aa': 2, 'aaa': 1}
任何人都可以帮助我获得所需的输出吗?
期望的输出:
{'a': 3, 'aa': 2, 'aaa': 1}
解决方案
我认为这就是你想要的:
s = "aaa"
res = [s[i: j] for i in range(len(s))for j in range(i + 1, len(s) + 1)]
d = {}
for i in res:
if i not in d.keys():
d[i] = 1
else:
d[i] += 1
print(d)
推荐阅读
- css - Firefox 无法在 100% 高度的 div 中正确包装包含的图像
- php - 调用字符串上的成员函数 addEagerConstraints() - Laravel 8
- javascript - 重新渲染时未获得更新的宽度/高度
- python - 如何删除在指定列上重复的行?
- r - 学习对子集数据进行 R-Code 审查
- matlab - 为什么matlab中的tqwt函数会报错?
- python - 使用 Python 脚本删除 Raspberry Pi 上的文件 - 权限错误
- python - 即使我什至不访问此文件夹,为什么也会出现此错误?
- java - 无法将大量素数打印到控制台
- python - 输入为字典python列表