我有一种预感,我需要访问列表中的项目(字符串),修改该项目(作为字符串),并将其放回同一索引的列表中
我很难将一件商品带回同一个索引
for item in list:
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[item] = item
print item
现在我收到错误
TypeError: list indices must be integers, not str
由于此行list[item] = item
这是有道理的!但我不知道如何使用python
将项目放回到同一索引的列表中这是什么语法?理想情况下,for循环可以跟踪我当前所在的索引
答案 0 :(得分:44)
你可以这样做:
for idx, item in enumerate(list):
if 'foo' in item:
item = replace_all(...)
list[idx] = item
答案 1 :(得分:7)
您需要使用枚举函数:python docs
for place, item in enumerate(list):
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[place] = item
print item
另外,将单词列表用作变量是一个坏主意,因为它是python中的保留字。
由于您遇到了枚举问题,因此itertools库中的替代方法:
for place, item in itertools.zip(itertools.count(0), list):
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[place] = item
print item
答案 2 :(得分:3)
更改列表中每个元素的常用习惯用法如下所示:
for i in range(len(L)):
item = L[i]
# ... compute some result based on item ...
L[i] = result
这可以使用enumerate()重写为:
for i, item in enumerate(L):
# ... compute some result based on item ...
L[i] = result
请参阅enumerate。
答案 3 :(得分:1)
对于Python 3:
ListOfStrings = []
ListOfStrings.append('foo')
ListOfStrings.append('oof')
for idx, item in enumerate(ListOfStrings):
if 'foo' in item:
ListOfStrings[idx] = "bar"