Куча сторонних библиотек - это не недостаток, это преимущество
def trim(matrix):
fltr = lambda m: zip(*filter(any, m))
return [list(row) for row in fltr(fltr(matrix))]
matrix = trim(matrix)
dic.setdefault('key', []).append('value')
Если у вас файлы называются по-другому - поправьте..