TypeError: list indices must be integers, not str Python
list[s]
is a string. Why doesn't this work?
The following error appears:
TypeError: list indices must be integers, not str
list = ['abc', 'def']
map_list = []
for s in list:
t = (list[s], 1)
map_list.append(t)
When you iterate over a list, the loop variable receives the actual list elements, not their indices. Thus, in your example s
is a string (first abc
, then def
).
It looks like what you're trying to do is essentially this:
orig_list = ['abc', 'def']
map_list = [(el, 1) for el in orig_list]
This is using a Python construct called list comprehension.
Do not use the name list
for a list. I have used mylist
below.
for s in mylist:
t = (mylist[s], 1)
for s in mylist:
assigns elements of mylist
to s
i.e s
takes the value 'abc' in the first iteration and 'def' in the second iteration. Thus, s
can't be used as an index in mylist[s]
.
Instead, simply do:
for s in lists:
t = (s, 1)
map_list.append(t)
print map_list
#[('abc', 1), ('def', 1)]
list1 = ['abc', 'def']
list2=[]
for t in list1:
for h in t:
list2.append(h)
map_list = []
for x,y in enumerate(list2):
map_list.append(x)
print (map_list)
Output:
>>>
[0, 1, 2, 3, 4, 5]
>>>
This is what you want exactly.
If you dont want to reach each element then:
list1 = ['abc', 'def']
map_list=[]
for x,y in enumerate(list1):
map_list.append(x)
print (map_list)
Output:
>>>
[0, 1]
>>>