Ruby:从YAML添加到哈希/合并对象
我已经序列化了两个YAML文件 “PP”来自Ruby:从YAML添加到哈希/合并对象,ruby,hash,yaml,Ruby,Hash,Yaml,我已经序列化了两个YAML文件 “PP”来自 ἀγαπάω: present: ἀγαπάω future: ἀγαπήσω aorist: ἠγάπησα ἀγαπάω: pos: V bdag-headword: ἀγαπάω strongs: 25 gloss: I love ...many more... ……更多 “词素”来自 ἀγαπάω: present: ἀγαπάω future: ἀγαπήσω aorist: ἠγ
ἀγαπάω:
present: ἀγαπάω
future: ἀγαπήσω
aorist: ἠγάπησα
ἀγαπάω:
pos: V
bdag-headword: ἀγαπάω
strongs: 25
gloss: I love
...many more...
……更多
“词素”来自
ἀγαπάω:
present: ἀγαπάω
future: ἀγαπήσω
aorist: ἠγάπησα
ἀγαπάω:
pos: V
bdag-headword: ἀγαπάω
strongs: 25
gloss: I love
...many more...
我正在尝试将“gloss”和“strongs”的值添加到“pp”中,或者将pp值与词汇表中的这些新值合并。显然,ruby不允许在遍历散列时插入新值。到目前为止,我已经:
pps = Hash.new
pp.each do |p|
lexemes.each do |lex, arr|
if lex.match /^#{p[0]}$/
#match found
puts "p #{p[0]} ... lex #{lex}...#{arr['strongs']}....#{arr['gloss']} .
(pps[p[0]] ||= []) << p
pps[p[0]].push(:strongs => arr['strongs'], :gloss => arr['gloss'])
end
end
end
当我真正想要的时候:
ἀγαπάω:
present: ἀγαπάω
future: ἀγαπήσω
aorist: ἠγάπησα
strongs: 25
gloss: I love
知道我应该在哪里/如何管理新数据的插入吗
谢谢 此构造
|124;=[]
是数组的初始化,请尽量避免它。要合并两个散列
e,只需使用#merge
方法即可:
h1 = { h1: { hh1: 1, hh2: 2}}
# => {:h1=>{:hh1=>1, :hh2=>2}}
h2 = { h1: { hh3: 3, hh4: 4}}
# => {:h1=>{:hh3=>3, :hh4=>4}}
h1[:h1].merge(h2[:h1])
# => {:hh1=>1, :hh2=>2, :hh3=>3, :hh4=>4}