It is not the real answer to the OP but rather a huge comment to the question. I'm suggesting here the algorithm of how to find all (or almost all) such words. Problem is that I did not find the Zalizniak's dictionary in the electronic or online format which would be able to search by grammatical marks. Maybe, somebody from the community can help with this.
The phenomenon of having the ending -у in prepositional case for some words is described at the Zalizniak's dictionary. See the excerpt and the link to the original scanned pages below. All these nouns are marked with the sign П₂
in this dictionary.
If we look at one of online versions of Zaliznyak's dictionary for word "сад", here we can see that the word has the mark "п(2)".
Here is the excerpt from П₂ definition:
Помета П₂ (за которой может следовать в скобках предлог "в" или "на") - символ
наличия у данного слова особой формы так-называемого 2-го предложного падежа.
...
Помета П₂ означает, что у данного существительного в ед. числе после предлогов
"в" и "на", выступающих в одном из указанных ниже значений, употребляется особая форма,
отличная от обычного предложного падежа - так называемый 2-ой предложный падеж. Форма 2-го
предложного падежа ед. числа по буквенному составу равна форме Д. ед. того же слова, но
ударение в ней всегда на окончании. Примеры: "шкаф" (Д. ед. "шкАфу") - П₂ ед. "шкафУ";
...