簡體   English   中英

如何在 ruby​​ 中的嵌套散列中獲取某個值的鍵?

[英]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" }

如果此查找是一個執行多次的操作,並且您需要比這更快,您可以考慮允許更快查找的數據結構,例如以下之一:

  • 將內部數組轉換為Sets
  • 構造一個反向查找哈希,其中值( value1value2等)將指向初始哈希中的相應鍵(如果所有值都是唯一的)。
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM