Mar-18-2017, 10:37 AM
The lambda would look like this as a full function:
def sort_order(item): if isinstance(item, (int, float)): index = 0 else: index = 1 return (index, item)You could simplify that some, but I'm trying to be clear. As zivoni points out, you can expand that:
def sort_order(item): if isinstance(item, (int, float)): index = 0 elif isinstance(item, str): index = 1 elif isinstance(item, (tuple, list)): index = 2 elif isinstance(item, (dict, set)): index = 3 else: index = 99 return (index, item)And of course, any big if/elif/else structure suggests a dictionary:
type_order = {int: 0, float: 0, str: 1, list: 2, tuple: 2, dict: 3, set: 3} mixed_list.sort(key = lambda x: (type_order.get(x, 99), x))
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures