How replace city text box in shipping address with select component in drupal 7 commerce
In drupal several module can solved your problem: 

https://www.drupal.org/project/addressfield_vn

https://www.drupal.org/project/addressfield_cl

https://www.drupal.org/project/addressfield_peru

https://www.drupal.org/project/addressfield_ro

https://www.drupal.org/project/addressfield_hu

you can choose on of them and edit for your country. for example in addressfield_vn change country code «VN» to your country code. and add your province and city name to module.
for iran address i create a module. if you want then email to me.