Skip to content

Instantly share code, notes, and snippets.

@phith0n
Last active November 22, 2023 06:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phith0n/20ad17cbd487a833ad3022d366d63f04 to your computer and use it in GitHub Desktop.
Save phith0n/20ad17cbd487a833ad3022d366d63f04 to your computer and use it in GitHub Desktop.
sort a list by 2 key
from itertools import groupby
from operator import itemgetter
def order_by(data, key1, key2, reverse_key1=False, reverse_key2=False):
key1 = itemgetter(key1)
key2 = itemgetter(key2)
data = sorted(data, key=key1, reverse=reverse_key1)
groups = groupby(data, key=key1)
result = []
for _, group in groups:
result.extend(sorted(group, key=key2, reverse=reverse_key2))
return result
if __name__ == "__main__":
result = order_by([
{
"key1": 1,
"key2": 2
},
{
"key1": 2,
"key2": 2
},
{
"key1": 1,
"key2": 3
},
{
"key1": 2,
"key2": 1
}
], "key1", "key2", reverse_key1=False, reverse_key2=True)
print(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment