Ruby:从YAML添加到哈希/合并对象

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: ἠγ

我已经序列化了两个YAML文件

“PP”来自

ἀγαπάω:
  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}