python
21 lines · 5 steps
Multi-key sorting patterns in Python
Three ways to sort lists of dicts on multiple fields, including mixed ascending and descending order.
Explained by
highlit
1from operator import itemgetter
2
3
4def sort_employees(employees):
5 return sorted(
6 employees,
7 key=itemgetter("department", "last_name", "first_name"),
8 )
9
10
11def sort_by_salary_then_tenure(employees):
12 return sorted(
13 employees,
14 key=lambda e: (-e["salary"], e["years"], e["last_name"]),
15 )
16
17
18def sort_with_mixed_directions(records):
19 ordered = sorted(records, key=itemgetter("name"))
20 ordered.sort(key=itemgetter("priority"), reverse=True)
21 return ordered
01 / 01
STEP 01
‹ swipe to step through ›
Walkthrough
Space play
←→ step
click any line
Three takeaways
- 1A tuple key sorts by its first element, breaking ties with each following element in turn.
- 2Negating a numeric key inverts its direction while keeping other keys ascending in a single pass.
- 3Python's stable sort lets you layer sorts: sort by the least significant key first, most significant last.
Related explainers
python
import stripe from fastapi import APIRouter, Request, Header, HTTPException from app.config import settings
Handling Stripe webhooks in FastAPI
webhooks
signature-verification
event-routing
Intermediate
7 steps
python
from itertools import islice from typing import Iterable, Iterator, TypeVar T = TypeVar("T")
Batching an iterable for bulk indexing
generators
batching
lazy-evaluation
Intermediate
7 steps
python
import time from dataclasses import dataclass, field from fastapi import Depends, FastAPI, HTTPException, Request, status
Token-bucket rate limiting in FastAPI
rate-limiting
token-bucket
dependency-injection
Advanced
10 steps
python
import argparse import sys from pathlib import Path
Building a subcommand CLI with argparse
cli
argparse
subcommands
Intermediate
6 steps
python
from collections.abc import Mapping from typing import Any, Iterator
Flattening nested config into dotted keys
recursion
generators
tree-traversal
Intermediate
7 steps
python
import csv import io from datetime import datetime
Streaming a CSV export in Flask
streaming
generators
csv
Intermediate
9 steps
Share this explainer
Here's the card — post it anywhere.
Made with highlit — turn any snippet into a walkthrough like this in about a minute.
Explain your code
Embed this explainer
Drop the interactive walkthrough into a blog or docs. Views never cost a credit.
<iframe src="https://highlit.co/explainers/multi-key-sorting-patterns-in-python-explained-python-bd48/embed?autoplay=1" width="100%" height="520" loading="lazy" style="border:0"></iframe>
Autoplay is on by default — add ?autoplay=0 to start paused.