我目前正在尝试创建一个可以扫描字符串的代码,将每个字母的位置放在与该字母相关联的列表中(例如:如果您发现S为字符串的35,48和120个字母) ,它会将35,48和120放入字母S)的列表中。然后,它会将此列表放在字典中,作为带有S键的值。
我的问题很简单,当我尝试将值放入列表中时,我有一个IndexError:列表赋值索引超出范围,但我找不到原因。
string = "Squalalanoussommespartisetjetedteste"
taille = len(string)
dico = dict()
dico = {}
i = 0
for i in range(taille):
if string[i] == "A" or string[i] == "a" :
va = 0
valA = []
valA[va] = i
va = va + 1
print(valA)
我为我可怜的英语道歉,并感谢提前帮助。
答案 0 :(得分:2)
在将项目推送到python中的列表时,您不需要指定索引。试试这个:
for i in range(taille):
if string[i] == "A" or string[i] == "a" :
valA = []
valA.append(i)
print(valA)
答案 1 :(得分:0)
您在这些行中收到此错误
va = 0
valA = []
valA[va] = i
valA
此处为空白列表,零元素,因此当您尝试为其0
索引分配值时,会引发IndexError
。
同样要获取每个字符的索引,您可以直接循环遍历字符串,例如
s = "Squalalanoussommespartisetjetedteste"
d = dict()
for i, c in enumerate(s):
d.setdefault(c.lower(), []).append(i)
print d
答案 2 :(得分:0)
我在代码中发现了一些错误。
索引错误是因为您尝试调用空列表的第0个位置。
valA = []
列表为空。然后,当没有第0个位置时,你试图在第0个位置替换值
valA[va] = i
我对代码做了一些更改。在第九行中,您初始化一个空列表。你应该在for循环之前做到这一点。否则for循环每次启动它都会丢失前一循环中的值。
这是修改后的代码。
string = "Squalalanoussommespartisetjetedteste"
taille = len(string)
dico = dict()
dico = {}
i = 0
valA = []
for i in range(taille):
if string[i] == "A" or string[i] == "a":
valA.append(i)
print(valA)
我得到的输出是
[3, 5, 7, 19]
答案 3 :(得分:0)
虽然您可以使用简单的方法,但Python有一些有用的模块可能有所帮助。例如
import collections
s = "Squalalanoussommespartisetjetedteste"
result = collections.defaultdict(list)
for i,char in enumerate(s):
result[char].append(i)
result
将包含一个字符串作为键的字典,并列出char的索引作为项目。
答案 4 :(得分:0)
您每次都在重新定义变量。所以将它们移出循环。
va = 0
valA = []
还使用insert方法列表。 (当你需要在列表中使用define index时可以使用insert。否则追加就足够了)
所以最终代码:
string = "Squalalanoussommespartisetjetedteste"
taille = len(string)
dico = dict()
dico = {}
i = 0
va = 0
valA = []
for i in range(taille):
if string[i] == "A" or string[i] == "a" :
valA.insert(va, i)
va = va + 1
print(valA)
答案 5 :(得分:0)
索引错误,因为数组valA是空数组,这意味着没有索引... 使用函数append并在循环外声明数组valA ...
string = "Squalalanoussommespartisetjetedteste"
taille = len(string)
dico = dict()
dico = {}
i = 0
valA = []
for i in range(taille):
if string[i] == "A" or string[i] == "a" :
valA.append(i)
print(valA)