Data Development Functional ProgrammingSee in schedule
Sorting is one of those things that we take for granted in Python. The built-in "sorted" function knows how to sort any iterable of objects that are themselves sortable.
But hiding behind that simple description is a great deal of depth. In this talk, I'll go deep into what it means to sort, and how we can sort any collection of Python data. We'll see how you can use custom functions to sort built-in data structures in new and interesting ways. And we'll see how you can design your own custom classes such that they will sort in just the way you want.
After watching this talk, you'll have a better understanding of sorting, built-in data structures, function objects, and how "magic methods" affect the our Python classes. Moreover, you'll be able to write clearer, shorter, and more easily understood code.
Topics I'll address in this talk:
- "sorted" and Timsort
- Sorting a list of simple structures
- Reversing the direction with "reverse"
- Custom sorting with "key"
- Stable sort
- Sorting a list of dicts
- Using "lambda"
- Using operator.itemgetter
- Sorting a list of named tuples
- Sorting a list of objects
- Making your object sortable
- The functools.total_ordering decorator
This is an intermediate-level talk; I'll assume that anyone attending knows how to write functions, classes, and methods.
Type: Talk (30 mins); Python level: Intermediate; Domain level: Intermediate
Reuven teaches Python, data science, and Git to companies around the world. He also offers many online courses, including "Weekly Python Exercise," a community-based way to improve your Python fluency over time. Reuven writes two free, weekly newsletters — "Better developers" (about Python development, with more than 16,000 subscribers) and "Trainer weekly" (for technical trainers who want to improve their skills). Reuven is the author of "Python Workout" from Manning, and is a co-host of the new "Business of Freelancing" podcast. More information about Reuven, his courses, and writing is at http://lerner.co.il/ .