Форматирование списка API с циклом for в таблице

Я хочу вывести список, полученный от API, в таблицу, чтобы он выглядел лучше. Данные из API возвращаются с циклом for. Моя проблема сейчас в том, что я не знаю, как получить, чтобы заголовок не зацикливался каждый раз.

например:

И я хочу один заголовок, а остальные под заголовком

Мне удалось с некоторыми инструкциями отсюда, что данные будут отображаться с "Табуляцией" вообще в таблице. Тем не менее, "заголовок" будет вставлен при каждом запуске снова.

head = ["Datum", "Username", "License Server", "Feature Name", "Max. Usage", "Hours Used", "Max Used", "Hours Borrowed", "Max Borrowed"]

for item in (data['data'])
   if item['un'] == tecNo:
      print(tabulate([[item['fud'], item['un'], str(item['lsn']), str(item['fns']), str(item['musage']), str(item['hu']), str(item['mu']), str(item['hb']), str(item['mb'])]],headers=head, tablefmt="grid"))```


  [1]: https://stackru.com/images/c10dc73e0c4f13804a331e688ff3431b3e909d55.png
  [2]: https://stackru.com/images/ec785bc0554006b9b4e9502833efbc37702559b9.png

1 ответ

Решение

Вам нужно поместить элементы в 2d массив, а затем вызвать tabulate в конце.

table = []
for item in (data['data'])
   if item['un'] == tecNo:
      table.append([
          item['fud'], 
          item['un'], 
          str(item['lsn']), 
          str(item['fns']), 
          str(item['musage']), 
          str(item['hu']), 
          str(item['mu']), 
          str(item['hb']), 
          str(item['mb'])
      ])
tabulate(table, headers=head)
Другие вопросы по тегам