Я предполагаю, что группы разделены пустыми строками. Для этого вы можете использовать itertools.groupby
:
from itertools import groupby
data = ["a","abc","de","efg","", "b","ijk","lm","op","qr","", "c","123","45","6789"]
nl = [list(g) for k, g in groupby(data, ''.__ne__) if k]
d = {next(g): list(g) for k, g in groupby(data, ''.__ne__) if k}
print(nl)
print(d)
Результаты:
[['a', 'abc', 'de', 'efg'], ['b', 'ijk', 'lm', 'op', 'qr'], ['c', '123', '45', '6789']]
{'a': ['abc', 'de', 'efg'], 'b': ['ijk', 'lm', 'op', 'qr'], 'c': ['123', '45', '6789']}
В группе я использую ''.__ne__
, который является функцией для «не равно» пустой строки. Таким образом, он захватывает только группы непустых строк.
EDIT
Я только что прочитал, что вы не можете импортировать. Вот решение, просто используя al oop:
nl = [[]]
for s in data:
if s:
nl[-1].append(s)
else:
nl.append([])
И для dict:
itr = iter(data)
key = next(itr)
d = {key: []}
while True:
try: val = next(itr)
except StopIteration: break
if val:
d[key].append(val)
else:
key = next(itr)
d[key] = []