Ruby 使用哈希键引用现有数组
如果我有以下阵列:Ruby 使用哈希键引用现有数组,ruby,Ruby,如果我有以下阵列: alice = ["phone", "telegraph"] bob = ["paper", "book" ] carol = ["photograph", "painting"] 这个散列: test_hash = { "alice" => "employee 1", "bob" => "employee 2", "carol" => "employee 3" } 我如何迭代散列并使用键值引用回数组,以便提取(例如)alice拥有手机的事实 首先需
alice = ["phone", "telegraph"]
bob = ["paper", "book" ]
carol = ["photograph", "painting"]
这个散列:
test_hash = { "alice" => "employee 1", "bob" => "employee 2", "carol" => "employee 3" }
我如何迭代散列并使用键值引用回数组,以便提取(例如)alice拥有手机的事实 首先需要有一个如下所示的散列:
hsh = {"alice" => ["phone", "telegraph"],
"bob" => ["paper", "book" ],
"carol" => ["photograph", "painting"]}
test_hash = { "alice" => "employee 1", "bob" => "employee 2", "carol" => "employee 3" }
test_hash.each{|k,v| puts v if hsh.has_key?(k)}
# >> employee 1
# >> employee 2
# >> employee 3
或者
您首先需要有一个如下所示的哈希:
hsh = {"alice" => ["phone", "telegraph"],
"bob" => ["paper", "book" ],
"carol" => ["photograph", "painting"]}
test_hash = { "alice" => "employee 1", "bob" => "employee 2", "carol" => "employee 3" }
test_hash.each{|k,v| puts v if hsh.has_key?(k)}
# >> employee 1
# >> employee 2
# >> employee 3
或者
不推荐,但可行:
alice = ["phone", "telegraph"]
bob = ["paper", "book" ]
carol = ["photograph", "painting"]
test_hash = { "alice" => "employee 1", "bob" => "employee 2", "carol" => "employee 3" }
test_hash.keys.each {|k| puts "#{k} has phone." if eval(k).include? 'phone'}
不推荐,但可行:
alice = ["phone", "telegraph"]
bob = ["paper", "book" ]
carol = ["photograph", "painting"]
test_hash = { "alice" => "employee 1", "bob" => "employee 2", "carol" => "employee 3" }
test_hash.keys.each {|k| puts "#{k} has phone." if eval(k).include? 'phone'}
我强烈建议避免依赖变量的名称。你可以做另一个散列,比如
person1={alice=>[“phone”,“something other”]}
,然后将你所有的人收集到persons
数组中并查询该数组。再次强调,不要依赖变量命名。同意@CDP。这个模式很难闻。好建议。我会的。我强烈建议避免依赖变量的名称。你可以做另一个散列,比如person1={alice=>[“phone”,“something other”]}
,然后将你所有的人收集到persons
数组中并查询该数组。再次强调,不要依赖变量命名。同意@CDP。这个模式很难闻。好建议。我会的。谢谢,这就是路。这是一个“首先要做正确的事情”的例子。@AltGrendel很好,你选择了正确的方法,但是你的问题是“我如何迭代散列并使用键值引用回数组”,而不是“实现数据结构的最佳实践是什么”-P真的,我很感激你们两位给了我这个问题的实际答案,并建议我在最佳实践出现问题之前保持最佳实践。谢谢,这是一条路。这是一个“首先要做正确的事情”的例子。@AltGrendel很好,你选择了正确的方法,但是你的问题是“我如何迭代散列并使用键值引用回数组”,而不是“实现数据结构的最佳实践是什么”-P真的,我很感激你们两位给了我这个问题的实际答案,并建议我在最佳实践出现问题之前保持它。