data = [{'id': 1}, {'e': 2}, {'i': 3}, {'id': 12}, {'e': 12}, {'i': 23},
{'id': 13}, {'e': 3}, {'i': None}, {'id': 14}, {'e': 23},
{'i': None}, {'id': 123}, {'e': 123}, {'i': 123}]
def chunker(seq, size):
# from: https://stackoverflow.com/a/434328/11384184
return (seq[pos:pos + size] for pos in range(0, len(seq), size))
print(f"|id|e|i|")
for id_obj, e_obj, i_obj in chunker(data, 3):
print(f"|{id_obj['id']}|{e_obj['e']}|{i_obj['i']}|")
# |id|e|i|
# |1|2|3|
# |12|12|23|
# |13|3|None|
# |14|23|None|
# |123|123|123|
I just print
ed the result, but it should be simple to generate the corresponding HTML from there.