【发布时间】:2015-04-24 23:27:22
【问题描述】:
我正在尝试获取一个哈希值,该哈希值具有一个反转的值数组,使得键现在是值。从这样的表达式:
StackOverflow.transform({ 1 => ['A', 'E'] , 2 => ["B"]})
我正在尝试得到这个结果:
{"A"=>1, "E"=>1, "B"=>2}
我有这个:
class StackOverflow
def self.transform(old)
a = Hash[old.map { |k,v| v.product([k]) }.first]
end
end
但所有键都作为单独的键分开(未分组)。它返回:
{"A"=>1, "E"=>1}
我也在尝试对键进行小写,但我觉得在我正确地解决了这个反转问题之后,我也能够(希望?)弄清楚小写逻辑。
【问题讨论】:
-
我更喜欢@Mark 使用
flat_map,但另一种选择是将first替换为flatten(1)。 -
这是stackoverflow.com/questions/7513730/hash-invert-in-ruby 的副本,尽管可能值得放弃,因为@MarkThomas 的答案比我在上一个问题中看到的任何答案都好?
-
这与@Sid 极为相似,但不幸的是,我找不到适合我的情况的好答案。感谢您留下它。不幸的是,我投了反对票(可能是因为这个)——但我向人们保证,在发布问题之前,我会尽可能多地搜索 StackO。