By adding an instance variable to keep track of the currently picked item, you can always reference it in the future individually.
Ev17: On Z and overlapping Sprite2
-> Ev18: Tests to see if you are holding an item.
--> Ev19: Pickall Sprite2s again, in case the held item is not overlapping (which it will be in this case, but maybe a future item doesn't), and then pick just the held item
### Set that item as not picked up
-->Ev 20: Of the overlapping items, pick those that are NOT the held item AND then pick a random one
### Set the new item's pickup=True, and store that UID in the Player
-->Ev 21: ELSE (there were no other items to pick up, so) reset the stored UID so we know we aren't holding anything.
To deal with different types, you could use Families, or you have to deal with the combinations yourself.