[英]How do I get the key for a certain value in a nested hash in ruby?
這是我之前發布的另一個主題的后續問題。
假設我有以下哈希。
my_hash = {
'array1' => %w[
value1
value2
],
'array2' => %w[
value3
value4
]
}
在其中一個數組中獲取某個值的鍵的最快或最簡單的方法是什么。 比如我想獲取value2的key,獲取array1,或者獲取value3的key,獲取array2
使用現有數據結構最快的方法是掃描哈希中的所有數組:
key, _ = my_hash.find{|k, v| v.include? "value3" }
如果此查找是一個執行多次的操作,並且您需要比這更快,您可以考慮允許更快查找的數據結構,例如以下之一:
value1
、 value2
等)將指向初始哈希中的相應鍵(如果所有值都是唯一的)。my_hash.detect { |_, v| v.include? 'value2' }.first
請注意,如果有很多鍵,在 values 數組中有value2
,這種方法將返回第一個。
要接收所有密鑰,可以使用:
my_hash.select { |_, v| v.include? 'value2' }.to_h.keys
或者:
my_hash.map { |k, v| k if v.include?('value2') }.compact
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.