如何用Ruby生成以a-z为键、1-26为值的哈希表?
Ruby快速生成a-z对应1-26的哈希表
不用手动逐个编写键值对,有几种简洁的方式生成你需要的哈希表:
- 方法一:范围配对转哈希
这是最直观简洁的写法,通过zip把字母范围和数字范围配对,再转成哈希:
alphabet = ('a'..'z').zip(1..26).to_h
- 方法二:遍历字母赋值
如果需要预留扩展空间,可用each_with_index遍历,索引加1得到对应数值:
alphabet = ('a'..'z').each_with_index.with_object({}) do |(char, index), hash| hash[char] = index + 1 end
也可以写成更简短的单行版:
alphabet = {} ('a'..'z').each_with_index { |c, i| alphabet[c] = i + 1 }
生成后的哈希表完全适配你的调用逻辑:
# 调用示例 puts alphabet['a'] # 输出 1 puts alphabet['z'] # 输出 26 puts alphabet['m'] if alphabet.key?('m') # 输出 13
内容的提问来源于stack exchange,提问作者Aliénor
相关产品推荐
相关产品推荐

