Ruby: Array in Hash umwandeln

Manchmal möchte man in Ruby ein Array in einen Hash umwandeln. Angenommen, man hat die Ausgabe von I18n.available_locales

locales = [:en, :de, :fr]

und möchte daraus einen Hash für ein Select-Element erzeugen, etwa so:

{:en => 'EN', :de => 'DE', :fr => 'FR'}

Wie macht man das möglichst elegant? Zunächst gibt es natürlich inject:

locales.inject({}) {|hsh, sym| hsh[sym] = sym.to_s.upcase; hsh}

Aber den folgenden Ansatz finde ich deutlich besser, vor allem weil er die Absicht klarer zum Ausdruck bringt (und nebenbei auch schneller ist):

Hash[locales.map{|sym| [sym, sym.to_s.upcase]}]

Zur Erinnerung: Hash[[[:a,:b],[:c,:d]]] (ebenso wie Hash[:a,:b,:c,:d]) ergibt {:a => :b, :c => :d}.