Найти индекс значения в двумерном массиве - PullRequest
0 голосов
/ 11 февраля 2019

Вот мой код:

test_list= [
    ["Romeo and Juliet","Shakespeare"],
    ["Othello","Play"],
    ["Macbeth","Tragedy"]
]

value = "Tragedy"

print(test_list.index(value))

В результате я получаю «ValueError:« Трагедия »отсутствует в списке

Я пришел бы к выводу, что .index работает толькодля 1D массивов?Но тогда как мне сделать это, чтобы умереть 2D-массивов?Этот код работает нормально, если я сделаю массив 1D.Пожалуйста, помогите, но в простых терминах, поскольку я новичок.

Извинения за проблемы форматирования на мобильном телефоне.Массив выставлен правильно для меня.

Ответы [ 4 ]

0 голосов
/ 11 февраля 2019

массивы numpy могут помочь в вашем конкретном случае

import numpy

test_array = numpy.array(Testlist)
value = "Tragedy"

numpy.where(test_array==value)
# you will get (array([2]), array([1]))
0 голосов
/ 11 февраля 2019

Вы также можете использовать оператор карты:

# Get a boolean array - true if sublist contained the lookup value
value_in_sublist = map(lambda x: value in x, test_list)

# Get the index of the first True
print(value_in_sublist.index(True))
0 голосов
/ 11 февраля 2019

Вы также можете использовать numpy:

import numpy as np
test_list = np.array(test_list)
value = 'Tragedy'
print(np.where(test_list == value))

Вывод:

(array([2]), array([1]))

Если у вас есть несколько вхождений элемента, то np.where даст вам списокиндексы на все случаи жизни.

0 голосов
/ 11 февраля 2019

Просмотрите список и найдите строку в каждом подсписке.

Testlist = [
               ["Romeo and Juliet","Shakespeare"],
               ["Othello","Play"],
               ["Macbeth","Tragedy"]
               ]

Value = "Tragedy"

for index, lst in enumerate(Testlist):
  if Value in lst:
    print( index, lst.index(Value) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...