Every programmer meets lists (or arrays or matrices) early in her career. Most never meet sets and dictionaries, and that's a shame: for many problems, they're more efficient in both human and machine terms. They're also the basis of some advanced programming techniques that give us much more control over what our programs do and how they do it.