哈希与以键为符号的哈希之一合并

问题描述 投票:3回答:3

我在Ruby中有两个这样的哈希值

hash1={"a" = > "b"}
hash2={:a => "c" }

当我在做hash1.merge!(hash2)我得到的结果是>>

{"a"=>"b", :a=>"c"} 

我想得到结果为{"a" => "c"},基本上我希望ruby将符号和字符串作为键值对待。

我当时正在研究Hash类,找不到任何方法。

问题是如何合并以使上述操作的结果为{“ a” =>“ c”}。

我在Ruby中有两个哈希,例如hash1 = {“ a” =>“ b”} hash2 = {:a =>“ c”}当我执行hash1.merge!(hash2)时,得到的结果为{“ a” =>“ b”,:a =>“ c”}我想得到...

ruby hash
3个回答
7
投票

Rails的ActiveSupport gem具有完成任务的stringify_keys(请参阅:http://apidock.com/rails/Hash/stringify_keys)方法:


2
投票

您可以将哈希键规范化为相同的类型(即hash.transform_keys(&:to_s) to_s)并合并:


0
投票

鉴于您想要修改h = -> (h) { Hash[h.map{ |k,v| [k.to_s, v] }] } (而不是创建新的哈希),您可以这样做:

© www.soinside.com 2019 - 2024. All rights reserved.