我正在玩ruby中的一些数据并尝试创建嵌套的哈希结构...让我说我有两个表我转换为哈希...一个表是团队攻击,另一个表是团队攻击传递进攻,我想加入一个关键=团队的一个数据结构......
全队的进攻......
Tm,table_name,Season,Offensive_Rank,G,PF,Yds,Ply,Y/P,TO,FL,1stD,Cmp,Att,Yds,TD,Int,NY/A,1stD,Att,Yds,TD,Y/A,1stD,Pen,Yds,1stPy,Sc%,TO%,EXP
Carolina Panthers,team-offence,2015,1,16,500,5871,1060,5.5,19,9,357,300,501,3589,35,10,6.7,197,526,2282,19,4.3,136,103,887,24,42.9,9.6,125.65
Carolina Panthers,team-offense,2014,19,16,339,5547,1060,5.2,23,11,347,327,545,3511,23,12,6,199,473,2036,10,4.3,117,83,756,31,34.8,11.8,29.83
Carolina Panthers,team-offense,2013,18,16,366,5069,999,5.1,19,6,319,292,473,3043,24,13,5.9,169,483,2026,14,4.2,122,80,671,28,36.5,9.4,70.12
团队通过...
Tm,table_name,Season,Passing_rank,G,Cmp,Att,Cmp%,Yds,TD,TD%,Int,Int%,Lng,Y/A,AY/A,Y/C,Y/G,Rate,Sk,Yds,NY/A,ANY/A,Sk%,4QC,GWD,EXP
Carolina Panthers,team-passing,2015,24,16,300,501,59.9,3589,35,7,10,2,74,7.7,8.2,12.9,224.3,99.2,33,284,6.7,7.2,6.2,3,4,122.36
Carolina Panthers,team-passing,2014,19,16,327,545,60,3511,23,4.2,12,2.2,51,7,6.9,11.7,219.4,86.2,42,317,6,5.8,7.2,3,2,56.09
Carolina Panthers,team-passing,2013,29,16,292,473,61.7,3043,24,5.1,13,2.7,79,7.1,6.9,11.6,190.2,88.8,43,336,5.9,5.7,8.3,4,4,54.85
我可以创建单独的哈希表'
{"Carolina Panthers" => [ {team-offense...}, {...}, {...} ] }
{"Carolina Panthers" => [ {team-passing...}, {...}, {...} ] }
有没有办法在key = team上创建一个连接,其中我的数据结构将是两组哈希表,例如......,
{"Carolina Panthers" => [ {team-offense...}, {...}, {...} ],
[ {team-passing...}, {...}, {...} ] }
我知道这可能不是一种最直观的做事方式,但我正在努力做一些有趣的'数据结构与数据。
答案 0 :(得分:1)
>> hash1 = {"Carolina Panthers" => ['team offense'] }
>> hash2 = {"Carolina Panthers" => ['team passing'] }
>> hash3 = hash1.keys.map { |team_name| [team_name, [hash1[team_name], hash2[team_name]]] }.to_h
=> {"Carolina Panthers"=>[["team offense"], ["team passing"]]}
也就是说,通过创建自定义类并使用具有属性的对象来存储数据,您将获得极大的帮助。这种复杂的数据结构会让您头疼。祝你好运!
答案 1 :(得分:0)
我想我得到了一些与我正在寻找的东西......我截断了列,以便我可以发布样本数据结构...
pp team_offense.merge(team_passing) { |key, off, pass| [*off].to_a + [*pass].to_a }.select { |team| team == 'Carolina Panthers' }
{"Carolina Panthers"=>
[{:table_name=>"team-offense", :season=>2015, :offensive_rank=>1},
{:table_name=>"team-offense", :season=>2014, :offensive_rank=>19},
{:table_name=>"team-offense", :season=>2013, :offensive_rank=>18},
{:table_name=>"team-passing", :season=>2015, :passing_rank=>24},
{:table_name=>"team-passing", :season=>2014, :passing_rank=>19},
{:table_name=>"team-passing", :season=>2013, :passing_rank=>29}]}