Python Sets: When and How to Use Them Effectively