def sort_list_of_dictionary(l, key, deep_copy=True): ''' sorts a list of dictionary based on a key value by Ritesh Nadhani, riteshn@gmail.com, 08/19/2008 if deep_copy is True then it returns a new list otherwise it does a inline sorting tests: l = [ {'key':'R', 'item1':'item1', 'item2':'item2'}, {'key':'Z', 'item1':'item1', 'item2':'item2'}, {'key':'A', 'item1':'item1', 'item2':'item2'}, {'key':'B', 'item1':'item1', 'item2':'item2'}, ] # deep_copy = True n = sort_list_of_dictionary(l, 'key') print "Sorted List ", n, " Original List ", l # deep_copy = False sort_list_of_dictionary(l, 'key', False) print "Sorted List ", l ''' if deep_copy: result = copy.deepcopy(l) result.sort(lambda x,y:cmp(x[key],y[key])) return result else: l.sort(lambda x,y:cmp(x[key],y[key]))