Ответ 1
Используйте понимание списка, чтобы включить dict в список списков и/или массив numpy:
np.array([[books[author][genre] for genre in sorted(books[author])] for author in sorted(books)])
ИЗМЕНИТЬ
По-видимому, у вас есть нерегулярное количество ключей в каждом под-словаре. Составьте список всех жанров:
genres = ['humor', 'action', 'comedy']
И затем перебирайте словари обычным образом:
list_of_lists = []
for author_name, author in sorted(books.items()):
titles = []
for genre in genres:
try:
titles.append(author[genre])
except KeyError:
titles.append(0)
list_of_lists.append(titles)
books_array = numpy.array(list_of_lists)
В основном я пытаюсь добавить значение из каждого ключа в genres
в список. Если ключ отсутствует, он выдает ошибку. Я поймаю ошибку и добавлю вместо этого 0.