Converting List Of Lists Into A Table
I have this list of lists: tableData = [['apples', 'oranges', 'cherries', 'banana'],              ['Alice', 'Bob', 'Carol', 'David'],              ['dogs', 'cats', 'moose', 'goose'
Solution 1:
To transpose the table, use the zip-and-splat trick.
To left-or-right-justify cells, use the format spec language:
>>>for row inzip(*tableData):...print'{:<10}{:>7}    {:<10}'.format(*row)...
apples      Alice    dogs      
oranges       Bob    cats      
cherries    Carol    moose     
banana      David    goose   
Solution 2:
One could also play around with pandas.DataFrame:
In [22]: import pandas as pd
In [22]: pd.DataFrame(tableData).T # .T means transpose the dataframe
Out[22]:
          0120    apples  Alice   dogs
1   oranges    Bob   cats
2  cherries  Carol  moose
3    banana  David  goose
Remove those annoying numbers by setting columns and indices to blank:
In [27]: l1, l2 = len(tableData), len(tableData[0])
In [28]: pd.DataFrame(tableData, index=['']*l1, columns=['']*l2).T
Out[28]:
    apples  Alice   dogs
   oranges    Bob   cats
  cherries  Carol  moose
    banana  David  goose
Solution 3:
The easiest way to "flip" the nested list is to use zip:
for fruit, name, animal in zip(*tableData):
    print(fruit.ljust(10), name.ljust(10), animal.ljust(10))
This prints:
apples     Alice      dogs
oranges    Bob        cats
cherries   Carol      moose
banana     David      goose
Solution 4:
There is already a builtin function for this: zip.
zip(* [['apples', 'oranges', 'cherries', 'banana'],
       ['Alice', 'Bob', 'Carol', 'David'],
       ['dogs', 'cats', 'moose', 'goose']])
Post a Comment for "Converting List Of Lists Into A Table"