I never do.
The real reason behind it is because I reuse other's code. I have one project that I treat like production code. I simply cannot rely on my own implementation of data structures or common algorithms.
I can find thousands of thoroughly tested dictionaries, linked lists, stacks, quick sort, tree search, ... implementations. I effectively save a lot of time by reusing them (free licenses are a blessing).
This is even more true for Python (on which I work most of the time). Virtually everything that could be reused is already available in the interpreter as some internal module. After all, python comes with
batteries included :)