Bny4W
Bny4W

Reputation: 21

Sort list by a function with several parameters

How can I sort some objects on the following list with the result of the function?

sorted_list = []
for c in objects:
    sorted_list.insert(c)

    sorted_list.sort(function(c))

Something like a map

Example:

objects = [node3, node2, node1, node4]

def function (node, player):
   if (node == node1): return 1
   else if (node == node2): return 2
   else if (node == node3): return 3
   else if (node == node4): return 4

output:

objects = [node1, node2, node3, node4]

Upvotes: 0

Views: 47

Answers (1)

Óscar López
Óscar López

Reputation: 236004

Use the ranking function as the sorting key:

sorted_list.sort(key=lambda node: function(node, player))

I don't know why you pass player as parameter if you're not using it. If you remove it, the key will be even simpler:

sorted_list.sort(key=function)

Upvotes: 1

Related Questions