astanin / python-tabulate

Pretty-print tabular data in Python, a library and a command-line utility. Repository migrated from bitbucket.org/astanin/python-tabulate.
https://pypi.org/project/tabulate/
MIT License
2.1k stars 163 forks source link

Fix headers for list of dicts #247

Open jhadida opened 1 year ago

jhadida commented 1 year ago

This contribution corrects the behavior of the headers option when the input data is a list of dict.

  1. Fix the behavior of headers="firstrow". The example below illustrates the current behavior, which is incorrect:
    
    x = [ {'b': 'B', 'a': 'A'}, 
      {'a': 1, 'b': 2}, 
      {'a': 3, 'b': 4, 'c': 5} ]

print(tabulate( x, headers='firstrow' ))

Current output:

#

B A c

--- --- ---

2 1

4 3 5

Proposed output:

#

B A

--- ---

2 1

4 3


2. Fix the current behavior when `headers` is specified as a list of keys:

x = [ {'a': 1, 'b': 2}, {'a': 3, 'b': 4, 'c': 5} ]

print(tabulate( x, headers=['b','a'] ))

Current output:

#

b a

-- --- ---

1 2

3 4 5

Proposed output:

#

b a

--- ---

2 1

4 3