문자열과 해시간에 요소가 교체되는 루비 배열이 있습니다. 예 :중첩 해시에 대한 Ruby 혼합 배열
["1234", Hash#1, "5678", Hash#2]
이 중첩 해시 구조를 만들고 싶습니다. 따라서
hash["1234"]["key in hash#1"] = value
hash["5678"]["key in hash#2"] = value
아무에게도/지금이 작업을 수행하는 좋은 방법이 있습니까? 고맙습니다.
문자열과 해시간에 요소가 교체되는 루비 배열이 있습니다. 예 :중첩 해시에 대한 Ruby 혼합 배열
["1234", Hash#1, "5678", Hash#2]
이 중첩 해시 구조를 만들고 싶습니다. 따라서
hash["1234"]["key in hash#1"] = value
hash["5678"]["key in hash#2"] = value
아무에게도/지금이 작업을 수행하는 좋은 방법이 있습니까? 고맙습니다.
는 단순히 한 번에 두 슬라이스와 해시로 변환합니다
hsh = Hash[*arr] #suppose arr is the array you have
를 사용합니다.
당신은'Hash [* arr]'이 필요합니다. – Phrogz
@Phrogz 네, 맞습니다 :) – texasbruce
배열에이 작업을 직접 수행하는 방법이 없다고 생각합니다. 다음 코드는 작동하며 읽기가 쉽습니다.
hsh = {}
ary.each_slice(2) do |a, b|
hsh[a] = b
end
# Now `hsh` is as you want it to be
Simpler :'hsh = 해쉬 [ary.each_slice (2) .to_a]'(내 대답 참조). – Phrogz
당신이 원하는 무엇을 추측은 이후 "해시 # 1 키는"전혀 분명하지 않으며, 사용자가 정의한 것을 hash
또는 value
가 있어야한다 : 아마 또는
value = 42
h1 = {a:1}
h2 = {b:2}
a = ["1234",h1,"5678",h2]
a.each_slice(2).each{ |str,h| h[str] = value }
p h1, #=> {:a=>1, "1234"=>42}
h2 #=> {:b=>2, "5678"=>42}
, 그냥 재미 측면을 사용하여,
h1 = {a:1}
h2 = {b:2}
a = ["1234",h1,"5678",h2]
hash = Hash[ a.each_slice(2).to_a ]
p hash #=> {"1234"=>{:a=>1}, "5678"=>{:b=>2}}
p hash["1234"][:a] #=> 1
하자 추측 : 당신이 의미
,require 'facets'
xs = ["1234", {:a => 1, :b => 2}, "5678", {:c => 3}]
xs.each_slice(2).mash.to_h
#=> {"1234"=>{:a=>1, :b=>2}, "5678"=>{:c=>3}}
여기에서 원하는 내용이 완전히 명확하지 않습니다. 배열에서 두 번째 요소 (해시이어야 함)를 가져 와서 배열의 이전 항목을 사용하여 원래 해시의 기존 키를 기반으로 만드는 해시 값을 사용하여 키를 만들고 싶습니까? 정렬)? – coreyward
해시에 둘 이상의 키/값이있을 수 있습니다. 어디로 갈까요? 예제에서 유효한 Ruby를 사용하십시오. 1)이 배열 (실제 배열)을 가지고 있고 2)이 결과를 원한다면 3) 그게 지금까지 해봤습니다. – tokland
나는 그것이 명확하지 않기 때문에 당신의 질문을 downvoted했습니다. 실제 데이터가 어떤 모습으로 보이고 그 데이터로 무엇을 만들고 싶은지 명확히하기 위해 질문을 편집하면 기꺼이 내 투표를 취소 할 것입니다. – Phrogz