我写了一个代码,将字母表中的每个字母都与另一个字符(长度为1的字符串)匹配,然后将这两个字符转换为散列:

Hash[String.alphabet.zip String.alphabet]
# String.alphabet returns an array with 0:A, 1:B, ... ,25:Z
# I take two times the alphabet to demonstrate

但是当我用
puts "#{hash.keys.join}\n#{hash.values.join}"

它给了我
VKWLAXMBYNCZODPEQFRGSHTIUJ
VKWLAXMBYNCZODPEQFRGSHTIUJ

,虽然这是正确的,但如果我想知道字母是否匹配正确,就很难阅读,我更希望输出的形式是
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ

[打印方法在其他散列上工作正常,据我所知是正确的]
那么:如何在保持密钥原始顺序的同时“压缩”数组?

最佳答案

关于有序散列的答案是正确的,但是在您的情况下,您不一定要保持散列的顺序,您可以只对其进行排序以获得输出。

puts hash.sort.transpose.map(&:join)

关于ruby - 以随机顺序放置 ruby 哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5474613/

10-12 20:31