I want to sort list of tuples like that:
rows = [ ('A', 'a', 1, '?'),
     ('A', 'a', 1, '!'),
     ('A', 'a', 1, '#'),
     ('A', 'b', 1, '#'),
     ('A', 'b', 2, '$'),
     ('A', 'c', 2, '@'),
     ('A', 'd', 3, '@') ]
by this frequency pattern:
- we have 1 value 'A' at index [0]
- we have 4 values 'a', 'b', 'c', 'd' at index [1]
- we have 3 values 1,2,3 at index [2]
- we have 5 values '?', '!', '#', '$', '@' at index[3]
so, sorted list should look like that:
rows = [ ('A', 1, 'a', '?'),
     ('A', 1, 'a', '!'),
     ('A', 1, 'a', '#'),
     ('A', 1, 'b', '#'),
     ('A', 2, 'b', '$'),
     ('A', 2, 'c', '@'),
     ('A', 3, 'd', '@') ] 
How to do that elegantly?