Blog Archive

Tuesday, July 24, 2012

Sorting Hat Function

Sometimes you will want to sort a spreadsheet by columns.

Take for example
'green',100
'blue',100
'orange',3
'blue',10
'orange',11

we could sort this spread sheet by either the color column or the number column.

Using the following function-
def sorting_hat(a_list,column):
    col=column
    bycolumn=lambda x:x[col]
    from itertools import groupby
    a_list=sorted(a_list,key=bycolumn)
    cat=[]
    gr=[]
    for c,g in groupby(a_list,key=bycolumn):
        cat.append(c)
        gr.append(list(g))
    a_list=gr 
    return a_list,cat
we can sort by color (column 0)
info=[['green',100],
      ['blue',100],
      ['orange',3],
      ['blue',10],
      ['orange',11]]

sortedlist,categories=sorting_hat(info,0)

>>> categories
['blue', 'green', 'orange']
>>> sortedlist
[[['blue', 100], ['blue', 10]],
 [['green', 100]],
 [['orange', 3], ['orange', 11]]]


and we can sort by number (column 1)

info=[['green',100],
      ['blue',100],
      ['orange',3],
      ['blue',10],
      ['orange',11]]

sortedlist,categories=sorting_hat(info,1)

>>> categories
[3, 10, 11, 100]
>>> sortedlist
[[['orange', 3]], 
[['blue', 10]],
 [['orange', 11]],
 [['green', 100], ['blue', 100]]]

No comments:

Post a Comment