def sort_by_key(list, i): list.sort(lambda a, b: cmp(a[i], b[i]))
test_list = [{'number': 1, 'written_number': 'one','animal': 'giraffe','price': 1.50}, {'number': 2, 'written_number': 'two','animal': 'elephant', 'price': 2.50}, {'number': 3, 'written_number': 'three','animal': 'zebra', 'price': 1.50}, {'number': 4, 'written_number': 'four','animal': 'hippopotamus', 'price': 1.50}]
sort_by_key(test_list, 'price')
This returns:
[{'price': 1.5, 'number': 1, 'animal': 'giraffe', 'written_number': 'one'}, {'price': 1.5, 'number': 3, 'animal': 'zebra', 'written_number': 'three'}, {'price': 1.5, 'number': 4, 'animal': 'hippopotamus', 'written_number': 'four'}, {'price': 2.5, 'number': 2, 'animal': 'elephant', 'written_number': 'two'}]
What I am looking for would sort on more than one key so, say 'price' and 'animal' so that the list would be ordered with the three items at 1.50 each but records would be giraffe, hippopotamus and zebra. If I wanted to sort on three indexes, say 'price', 'animal' and 'written number' and say last two animals were both zebras that it would put this in the correct order also.
I am have to say I have read a good deal about sorting today but have not come across a solution and have seen only limited comparison expressions to know what could work.
Regards, David
-- http://mail.python.org/mailman/listinfo/python-list