Генераторы Python: возможно ли получить индекс при совпадении - PullRequest
0 голосов
/ 28 ноября 2018

Я хотел бы получить индекс элемента, который соответствует определенному значению. Например, у меня есть массив формата:

data = [
  {
    type: <string>,
    texts: [ 
             text: <String>,
             locations: [
                           {
                             x: <int>,
                             y: <int>
                           }  
                        ]
           ]
  }

]

Я использую ниже, чтобы найти, существует ли тип:

matching_data = next((item for item in data if item["type"] == "fruit"), None) 

Если тип существует, я проверяю, существует ли определенный «текст», используя следующее:

if macthing_data == None:
   <do some thing>
else:
   type_idx = 0
   for idx, item in matching_data:
       if item["type"] == "fruit":
          type_idx = idx
          break

, затем пишу другой генератор (аналогично приведенному выше), чтобы проверить, соответствует ли 'text 'существует.

Можно ли каким-либо образом получить соответствующий idx также при проверке, существует ли соответствующее значение?Я бы использовал индекс для обновления значения в массиве.Извините, если сообщение не так разборчиво, как ожидается сообществом.спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Использование enumerate.

def example_generator():
  yield 'a'
  yield 'b'
  yield 'c'

for index, value in enumerate(example_generator()):
  print(index, value)

выходы

0 a
1 b
2 c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...