In your case it isn’t working because tables (and dictionaries) are passed by reference rather than value.
What’s probably happening is the dictionary in the table and the dictionary in the table.find are seen as 2 completely different dictionaries and thus will never be found unless you get the dictionary directly from the table.
Whereas values such as strings, numbers, etc, are passed by value, so even if you don’t have a direct reference it’ll still work
So your only choice is to iterate using an in pairs loop and see if all the stuff match. If you’re going to be using it a lot, put it in a function
the speed isnt effected searches all work the same granted the table is unsorted (its just about randomly stumbling on the value most common way being linear)