[英]Ruby access hash within an array within a hash (and add new hash)
我是Ruby的新手,仍然在學習哈希。 我試圖在這里尋找其他類似的答案,但找不到任何能夠完全回答我的問題的東西。
我將一些數據存儲在散列結構中,然后將其輸入到更新Neo4j數據庫的腳本中( 因此此數據結構很重要 ):
data = {
a: [
{
label: 'Person',
title: 'Manager',
name: 'Mike Waldo'
},
{
label: 'Person',
title: 'Developer',
name: 'Jeff Smith',
},
],
b: [
{
type: 'ABC',
source: 'abcde',
destination: ['Jeff Dudley', 'Mike Wells', 'Vanessa Jones']
}
]
}
我想出了如何返回單個值:
data.each{|x, y| puts y[0][:name]}
返回:Mike Waldo
兩個問題:
1)如何僅從數組“ a:[]”返回“標簽”,“標題”和“名稱”?
2)如何在數組'a:[]'下而不在':b []'下添加和保存新的哈希?
先謝謝您的幫助!
您可以返回特定鍵的值(:a)
data[:a]
# => [{:label=>"Person", :title=>"Manager", :name=>"Mike Waldo"}, {:label=>"Person", :title=>"Developer", :name=>"Jeff Smith"}]
而且,如果您需要將值保存到:a哈希中,則只需使用
data[:a] << {:label => "new label", :name => "new name", :titles => "new title"}
# => [{:label=>"Person", :title=>"Manager", :name=>"Mike Waldo"}, {:label=>"Person", :title=>"Developer", :name=>"Jeff Smith"}, {:label=>"new label", :name=>"new name", :titles=>"new title"}]
順便說一句:您的命令(data.each {| x,y |放入y [0] [:name]})僅在需要哈希的所有名稱時才返回拳頭哈希的名稱值
data.each do |k, a|
a.each do |h|
puts h[:name]
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.