I feel that your assumption - only one preferable way - does not hold. I see at least two cases with different requirements:
In maintenance-intensive code (e.g. an option parser of an evolving utility class) I would always go for cleaner code, so that others and I can implement new features more easily. The performance is not critical, as only small quantities (e.g. a dict of user settings) are processed.
while in
the implementation of a performance-critical algorithm in a data processing task, I would not mind writing a bit more verbose code for much faster execution. If the alorithm is unlikely to change, the little less readable code won't become an issue.