I have a 3 month old terrier mix who picks up everything on our walks (rocks, sticks, etc).
She will usually let me pull out the items she has picked up if I feel it may harm her. However, sometimes she'll pick something up and when I go to remove it she will growl, snap, and bite me.
Otherwise she is as friendly and loving as can be. I want to address this behavior now in case she were to pick up something dangerous, how do I teach her that this is unacceptable behavior?
Your pup is attempting to 'guard' these treasures she finds, and you're correct to want to nip this in the bud.
It can lead to more dominant, possibly even aggressive, behavior later on.
I would recommend teaching her the 'leave it' command. Start by giving her a toy at home, and then telling her to 'leave it' as you remove it from her mouth. Immediately she relinquishes it, give her a tasty treat - and give her the toy back!
Practice this several times a day, with different toys/possessions until she's totally comfortable with it. Then, move on to making her 'leave it' with treats/bones/food bowl etc. Dogs are more likely to guard their food, that's why you need to lay the groundwork with the toys first.
For example, while she's eating her food, tell her to 'leave it' and pick up the bowl, immediately let her see you put a few tasty morsels in her bowl and give it back to her. She always needs to see a reward for complying. Do the same with her bone, when you give her a treat (has to be a big biscuit or something similar that she can't swallow right down, that would be too challenging!).
Once she's mastered all this, repeat the same procedure when she's out walking and picks up something. Be sure to give her a tasty reward when she gives you her 'prize'. If it's a harmless stick, leaf or whatever you don't need to take it from her as long as you're confident she's learned this command and will obey you if necessary.
Hope this helps. Best of luck!
Best of luck with your little guy!