2 개의 해시 값을 병합하려고합니다. 새 값을 만듭니다. 나는루비는 nil 값으로 해시를 병합합니다.
Hash[b.map{|k,v| [a[k],v]}
으로 시도했지만 그것이 "A"값이 비어있는 것을 발견하면 (전무)은 그런 [K] ... 내가있어 뭔가 b를 인쇄하지 않습니다
| A | A | | B | B | ====> | C | C |
| key|value| | key|value| ====> |B_value|A_value|
| key|value| | key|value| ====> |B_value|A_value|
| key| nil | | key|value| ====> MISSING
| key|value| | key|value| ====> |B_value|A_value|
키가 동일합니다 나는 또한 아무 것도 볼 필요가 없습니다. 내가 배열 형식으로 인쇄하려고하면
나는 모든 (무기 호 포함) 볼 수 있습니다
p = a.map{|k,v| [b[k],v]}
은 아마지도
이 올바른 해결책이 아니다, 나에게 동일한 결과를 줄 수있는 다른 뭔가가있다? 해시에서header_hostname = Hash.new
working_host = Hash.new
fileset.each do |file|
header = YAML.load_file("output/#{file}")
header.each do |k_header,v_header|
if v_header == "Hostname"
header_hostname = header
end
end
working_host = Hash[header.map{|k, v| [header_hostname[k], v] }]
puts working_host
File.open("tmp/working_hosts.txt","a+") << working_host
출력이 같다 :
이 내 코드입니다
...
Erogazione VlanID: '2390'
" SubnetorIP": 10.*.*.*
" Netmask": 255.255.255.240
" Gateway": 10.*.*.*
...
Backup VlanID: ''
Managment VlanID: ''
Privata HB VlanID: ''
Remote Console VlanID: ''
...
해시
Header = {"98"=>"Erogazione VlanID", "99"=>" SubnetorIP", "100"=>" Netmask", "101"=>" Gateway", "102"=>" Speed(f,g)", "103"=>" Bond(s/n)", "104"=>" Porte", "105"=>" Switch", "106"=>" Slot/Porte", "107"=>" PortePPanel", "108"=>" PortePPanel(bond)", "109"=>"Backup VlanID", "110"=>" SubnetorIP", "111"=>" Netmask", "112"=>" Gateway", "113"=>" Speed(f,g)", "114"=>" Porte", "115"=>" Switch", "116"=>" Slot/Porte", "117"=>" PortePPanel", "135"=>"Remote Console VlanID", "136"=>" SubnetorIP", "137"=>" Netmask", "138"=>" Gateway", "139"=>" Speed(f,g)", "140"=>" Porte", "141"=>" Switch", "142"=>" Slot/Porte", "143"=>" PortePPanel"}
Machine1 = {"98"=>"3315", "99"=>"10.*.*.*", "100"=>"255.255.255.240", "101"=>"10.*.*.*", "102"=>"g", "103"=>"", "104"=>"2.0", "105"=>"", "106"=>"", "107"=>"", "108"=>"", "109"=>"111", "110"=>"10.*.*.*", "111"=>"255.255.255.240", "112"=>"10.*.*.*", "113"=>"g", "114"=>"1.0", "115"=>"", "116"=>"", "117"=>"", "135"=>"111", "136"=>"10.*.*.*", "137"=>"255.255.255.240", "138"=>"10.*.*.*", "139"=>"", "140"=>"", "141"=>"", "142"=>"", "143"=>"" }
이 출력은 다음과 같습니다
output = {"Erogazione VlanID"=>"3315", " SubnetorIP"=>"10.*.*.*", " Netmask"=>"255.255.255.240", " Gateway"=>"10.*.*.*", " Speed(f,g)"=>"", " Bond(s/n)"=>"", " Porte"=>"", " Switch"=>"", " Slot/Porte"=>"", " PortePPanel"=>"", " PortePPanel(bond)"=>"", "Backup VlanID"=>"111", "Remote Console VlanID"=>"111"}
실제 출력물을 표시하고 어떻게 인쇄합니까? –
['Hash # merge'] (http://www.ruby-doc.org/core-2.1.0/Hash.html#method-merge) 메소드에 대해 알고 계십니까? –
병합 메서드는 old_value를 new_value와 병합합니다. 나는 이것을 필요로하지 않는다. B_value를 A_value의 키로 지정해야합니다. –