(irb):4:警告:键" abc"在第4行被复制和覆盖

时间:2018-02-06 12:15:53

标签: ruby

重新排列下面哈希中的键值,如下所示:

{"abc"=>"wqeq","dfg"=>"sadsada","qwe"=>"asdad","yui"=>"asdasd","abc"=>"weqqw","qwe"=>"assadsad","yui"=>"asd","dfg"=>"asdsad"}

{"abc"=>["wqeq","weqqw"] ...}

由于

1 个答案:

答案 0 :(得分:1)

这里的问题是指定一个与前一个键值相同的键会覆盖它。

据我所知,没有基于代码的解决方案来解决这个问题;你只需要用数组重新编写它作为键'他们重复的价值观。

{"abc" => ["wqeq", "weqqw"],
 "dfg" => ["sadsada", "asdsad"],
 "qwe" => ["asdad", "assadsad"],
 "yui" => ["asdasd", "asd"] }

我想这就是您正在寻找的输出。如果没有,请在问题中添加更多信息,我/其他人也可以提供帮助。

如果你想拿枪开刀,你可以使用compare_by_identity

hash = {}

hash.compare_by_identity
hash["abc"] = "wqeq"
hash["abc".dup] = "weqqw"

# ... etc ...

puts hash # => { "abc" => "wqeq", "abc" => "weqqw" }

...然后处理它。虽然感觉有点脏。