Я бы брал максимально возможный CPU (т.к. он обычно не обновляется) и смотрел на возможность расширения памяти и диска. Т.е. 8Gb на борту и слоты под 32Gb лучше чем 16Gb без возможности расширения. В этом случае вы оставляете себе возможность при необходимости в дальнейшем докупить и поставить больше памяти без необходимости менять весь ноут, что явно обойдётся дешевле.
То же самое и с диском - если его можно менять и / или есть слоты под дополнительные диски - то вы сможете поменять конфигурацию и / или расширить диск когда будет нужно, не упираясь в необходимость взять всё и сразу.
Стоит сразу учесть размер монитора. Конечно все люди разные, но программировать на 13" без внешнего экрана - так себе удовольствие как по мне, поэтому 15" явно лучше. HiDPI экраны (4K и Retina) явно дороже чем FullHD, а их необходимость именно для программирования на Python - сомнительна, так что вполне можно сэкономить и взять просто FullHD. Меньше FullHD точно не стоит, информации на экран выводить нужно немало.
В целом в ваш бюджет вполне влезает, к примеру, Lenovo T590 (а то и новый T15 Gen 1), особенно если брать с 8Gb на борту. К нему отдельно можно купить планку памяти на 32Gb и получить 40Gb. SSD тоже меняется не особо дорого если потребуется. В итоге получите машинку с современным процессором, кучей памяти (а 16Gb может легко начать не хватать) и заточенную именно под работу. Как минимум клавиатура у Lenovo точно хорошая :)