If you want to talk cheap, even ultra-cheap, I am using a $1.50 12-LED 3AA lantern from Dollar Tree, which has rotary switch low/high setting. I've had it apart (and managed to get it back together!) and found a resistor for low setting. It's still fairly bright on low, but increasing resistance would knock it down further. Not the most efficient way, but should work. Of course with such loose current regulation, brightness would change with cell state, less so with NiMH than alkalines or (horror) zinc-carbons.
Another alternative is lantern with continuous brightness control; but cheap ones I've seen are cheesy, using what looks like an audio volume pot. Must be something better.
Dave