("a".."z").each.with_index(1).inject({}){|h,(a,i)| h.tap{ h[a]=i} }

ついinjectを使ってしまうからコードが読みづらくなる