Python Forum

Full Version: Find index value in List
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
hi,

is there any good ways to find the location of a value in a list that consist of multiple brackets?

so for example:
test = ["54", "cat", "99", "1238"], ["758", "tre", "1233124"], ["hva skjer", "15684", "0"]
print(test.index("758")
gives the error:
print(test.index("cat"))
ValueError: tuple.index(x): x not in tuple
[Finished in 0.2s with exit code 1]
>>> [item.index('cat') for item in test if 'cat' in item]
[1]
>>> [item.index('758') for item in test if '758' in item]
[0]
The method index raises a ValueError, if the value does not exist in the list.
In addition, you have a 2d list, where you can't just use the method index.

Before you use the method index, you could look up with the in operator, if the value is in the list.

my_list = [1, 2, 3]
# code
if 2 in my_list:
    print("Index:", my_list.index(2))
But you have a 2d-list. You can nest for-loops, but it's not required in this case.
Loop over the rows and you get the columns.
For each column you look if the value you seek is in the row.
If this is the case, just return the row_idx and col_idx.


test = ["54", "cat", "99", "1238"], ["758", "tre", "1233124"], ["hva skjer", "15684", "0"]


def index2d(matrix, value):
    for row_idx, row in enumerate(matrix):
        if value in row:
            return row_idx, row.index(value)


index2d(test, "99")
What is your expected return value for test.index("758")? I'm sure you can write a function that returns the desired value, but what is the desired value in this case? 1? 4? (1, 0)?