我正在尝试创建一个巨大的哈希,其中有很多键,但只有几个值。
到目前为止,我有这样的...
du_factor = {
"A" => 1,
"B" => 1,
"C" => 1,
"D" => 2,
"E" => 2,
"F" => 2,
Run Code Online (Sandbox Code Playgroud)
...等等,等等等等,持续不断甚至超过您甚至想知道的时间。在不完全翻转其结构的情况下,创建此哈希的更短,更优雅的方法是什么?
编辑:嗨,我意识到有一种比给出的答案更简单,更优雅的方法。只需声明一个空哈希,然后使用所需键声明一些数组,然后使用for语句将其插入到数组中,如下所示:
du1 = ["A", "B", "C"]
du2 = ["D", "E", "F"]
dufactor = {}
for i in du1
dufactor[i] = 1
end
for i in du740
dufactor[i] = 2
end
Run Code Online (Sandbox Code Playgroud)
...但是没有人建议让我,极端的Ruby n00b,这一事实认为我一定不应该这样做。性能问题?
keys = %w(A B C D E F)
values = [1, 1, 1, 2, 2, 2]
du_factor = Hash[*[keys, values].transpose.flatten]
Run Code Online (Sandbox Code Playgroud)
如果这些数量超过 100,将它们写入 CSV 文件可能会更好。