Во-первых, вы должны разложить вложенные list
в dict
, где ключами являются строки, представляющие имена, а значения являются целыми числами:
nested_list = [['first'], [1234567812345678], ['second'], [1234432109877890]]
raw_dict = {k[0]: v[0] for k, v in zip(nested_list[::2], nested_list[1::2])}
Теперь мы хотим повернуть каждые 16-разрядное число во что-то, что может лучше представлять матрицу.numpy
- это один из способов, но давайте пока остановимся на базовом Python.
Заметьте, что если мы конвертируем каждое целое число в строку, каждый 4-символьный фрагмент будет представлять строку матрицы.Соответственно:
def to_matrix(i):
string = str(i)
return [[int(element) for element in string[i:i + 4]] for i in range(0, 16, 4)]
matrix_dict = {k: to_matrix(v) for k, v in raw_dict.items()}
Теперь наш dict
имеет значения, вложенные lists
, которые представляют собой матрицы:
print(matrix_dict)
Вывод:
{'first': [[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4], [5, 6, 7, 8]], 'second': [[1, 2, 3, 4], [4, 3, 2, 1], [0, 9, 8, 7], [7, 8, 9, 0]]}
Мы можемполучить доступ к произвольному элементу с помощью цепной индексации:
print(matrix_dict['first'][3][2])
Вывод:
7
EDIT : В случае, когда мы не хотим различать списки,тогда мы можем просто сделать это:
matrices = [to_matrix(element[0]) for element in nested_list if isinstance(element[0], int)]