Hard to deduct from the text actually, but I would try the following:
Change the slot to add an instance variable to indicate it is used. for example "occupied". 0 or 1. Initialise them to 0
within the Dictionary loop,
pick by evaluate with expression slot.category = dictionary.currentKey (or whatever holds the category)
In a subevent. Pick 0th instance of slot. So within the first picking, you've got the first one. So you're left with only 1 slot with the correct category.
Do your stuff with animations
Set Occupied to 1.
If you're interested you can check out my tuts on my youtube channel where I do stuff like that:
For example in Solitaire: First pick by evaluate, and then within that pick top.
Many many tutorials have "pick by evaluate" by the way, and also dictionary loops.
You can check them out if you want.
youtube.com/watch