Используйте индекс данных для печати всех элементов подряд в списке Python

#python

#python

Вопрос:

У меня есть список Python, и я реализовал прослушиватель щелчков для элементов, если у меня есть индекс элемента в этом списке,

Например, я могу получить текст (‘text’: ‘0000’), где индекс = 3 или текст (‘text’: ‘100’), где индекс = 24, как можно использовать индекс элемента для печати всех других данных в строке, в которой лежит этот индекс?

 data = [{'text': '400'}, {'text': 'Dairy'}, {'text': '0000'}, {'text': 'Milkshake'}, {'text': '500'}, {'text': 'Available'}, {'text': '0.0'}, {'text': '1'}, {'text': 'Kisumu'}, 

{'text': '500'}, {'text': 'Electronics'}, {'text': '1111'}, {'text': 'Flower'}, {'text': '700'}, {'text': 'Available'}, {'text': '50'}, {'text': '2'}, {'text': 'Kisumu'},

{'text': '500'}, {'text': 'Electronics'}, {'text': '8888'}, {'text': 'Eggs'}, {'text': '900'}, {'text': 'Unavailable'}, {'text': '100'}, {'text': '5'}, {'text': 'Kisumu'}]
  

Схематические данные
Схематические данные

Ответ №1:

Другой способ…

 data = [{'text': '400'}, {'text': 'Dairy'}, {'text': '0000'}, {'text': 'Milkshake'}, {'text': '500'}, {'text': 'Available'}, {'text': '0.0'}, {'text': '1'}, {'text': 'Kisumu'}, 
        {'text': '500'}, {'text': 'Electronics'}, {'text': '1111'}, {'text': 'Flower'}, {'text': '700'}, {'text': 'Available'}, {'text': '50'}, {'text': '2'}, {'text': 'Kisumu'},
        {'text': '500'}, {'text': 'Electronics'}, {'text': '8888'}, {'text': 'Eggs'}, {'text': '900'}, {'text': 'Unavailable'}, {'text': '100'}, {'text': '5'}, {'text': 'Kisumu'}]

rows = [data[x:x 9] for x in range(0,len(data),9)]  # split to rows

idx = 24

print(rows[idx//9])
  

Вывод

 [{'text': '500'}, {'text': 'Electronics'}, {'text': '8888'}, {'text': 'Eggs'}, {'text': '900'}, {'text': 'Unavailable'}, {'text': '100'}, {'text': '5'}, {'text': 'Kisumu'}]
  

Ответ №2:

 def get_row_range(index:int, num_cols:int) -> range:
    # index - index, which you want the row of
    # num_cols - number of columns in your table
    row = int(index/num_cols) # the row you want
    return range(row * num_cols, (row 1)*num_cols) # the range which that index lies

# Example usage of querying the index '10'
clicked_index = 10 # in the event handler get which index was clicked
num_cols = 9 # your example has 9 columns
for i in get_row_range(clicked_index, num_cols):
    print(data[i]["text"])